Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

주어진 숫자가 Python에서 광석 숫자인지 확인하십시오.

<시간/>

숫자 n이 있다고 가정합니다. n이 광석 수인지 아닌지 확인해야 합니다. 우리가 알고 있듯이 광석 수는 제수가 정수 조화 값을 갖는 수입니다.

따라서 입력이 28과 같으면 28의 제수가 6개 있으므로 출력은 True가 됩니다. [1, 2, 4, 7, 14, 28], so

주어진 숫자가 Python에서 광석 숫자인지 확인하십시오.

3은 정수이므로 28은 광석 수입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • get_all_div() 함수를 정의합니다. n
  • 소요됩니다.
  • div :=새 목록
  • (n의 제곱근) 범위 1에서 정수 부분까지의 i에 대해
    • n이 i로 나누어 떨어지면
      • (n / i)의 몫이 i이면
        • div 끝에 i 삽입
      • 그렇지 않으면
        • div 끝에 i 삽입
        • div 끝에 (n / i)의 몫 삽입
  • div 반환
  • get_harmonic_mean() 함수를 정의합니다. n
  • 소요됩니다.
  • div :=get_all_div(n)
  • 총계:=0
  • 길이 :=div의 크기
  • 0에서 길이 - 1까지의 범위에 있는 i에 대해
    • 총계 :=총계 + (n / div[i])
  • 총계 :=총계 / n
  • 반환 길이/총계
  • 기본 방법에서 다음을 수행합니다.
  • 평균:=get_harmonic_mean(n)
  • 평균이 정수이면
    • 참 반환
  • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시 코드

def get_all_div(n):  
   div = []
   for i in range(1, int(n**(0.5)) + 1):
      if n % i == 0:
         if n // i == i:
           div.append(i)
         else:
           div.append(i)
           div.append(n // i)
   return div

def get_harmonic_mean(n):
   div = get_all_div(n)

   total = 0
   length = len(div)
 
   for i in range(0, length):
      total += (n / div[i])
 
   total /= n
   return length / total
 
def solve(n):
   mean = get_harmonic_mean(n)
   if mean - int(mean) == 0:
      return True
   return False

n = 28
print(solve(n))

입력

28

출력

True