프로젝트 오일러 21
n의 약수들 중에서 자신을 제외한 것의 합을 d(n)으로 정의했을 때,
서로 다른 두 정수 a, b에 대하여 d(a) = b 이고 d(b) = a 이면
a, b는 친화쌍이라 하고 a와 b를 각각 친화수(우애수)라고 합니다.
서로 다른 두 정수 a, b에 대하여 d(a) = b 이고 d(b) = a 이면
a, b는 친화쌍이라 하고 a와 b를 각각 친화수(우애수)라고 합니다.
예를 들어 220의 약수는 자신을 제외하면 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 이므로 그 합은 d(220) = 284 입니다.
또 284의 약수는 자신을 제외하면 1, 2, 4, 71, 142 이므로 d(284) = 220 입니다.
따라서 220과 284는 친화쌍이 됩니다.
또 284의 약수는 자신을 제외하면 1, 2, 4, 71, 142 이므로 d(284) = 220 입니다.
따라서 220과 284는 친화쌍이 됩니다.
10000 이하의 친화수들을 모두 찾아서 그 합을 구하세요.
---------------------------------------------------------------------------
sum=0;sum2=0;
Fsum=0;
for i in range(2,10001):
for j in range(1,i):
if i%j==0:
if i==j:
break;
sum+=j;
else:
continue;
for k in range(1,sum):
if sum%k==0:
if sum==k:
break;
sum2+=k;
else:
continue;
if i==sum2:
if i==sum:
sum=0;
sum2=0;
continue;
else:
print i;
Fsum+=i;
sum2=0;
sum=0;
print Fsum;
----------------------------------------------------------------
굉장히 복잡하게 코드를 만들었다. 리스트도 만들고 하고 싶었으나 아직 파이썬 기본 밖에 몰라서 기본적인 문법으로 힘들게 만들어봤다.
댓글
댓글 쓰기