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

Python을 사용하여 두 숫자(m,n)가 우호적인지 확인하는 방법은 무엇입니까?

<시간/>

우호적 인 숫자는 서로 다른 두 숫자이므로 각각의 고유 약수의 합이 다른 숫자와 같습니다. (숫자의 고유 약수는 숫자 자체가 아닌 해당 수의 양수입니다. 예를 들어 6의 고유 약수는 1, 2, 3입니다.)

파이썬에서는 이들 각각의 합계를 다른 것과 비교하여 이 숫자를 찾을 수 있습니다. 예를 들어,

def are_amicable(x, y)
   if x==y:
      return False
   # Find sum of their proper divisors
   sum_x = sum(e for e in range(1, x//2+1) if x % e == 0)
   sum_y = sum(e for e in range(1, y//2+1) if y % e == 0)
   
   #Return true of they satisfy the last condition
   return sum_x==y and sum_y==x
print(are_amicable(15, 20))
print(are_amicable(220, 284))

이것은 출력을 제공합니다

False
True