* Computer Science/Project Euler

project euler 21. problem

soicem 2016. 8. 1. 11:31

문제 : n의 약수들 중에서 자신을 제외한 것의 합을 d(n)으로 정의했을 때,

서로 다른 두 정수 ab에 대하여 d(a) = b 이고 d(b) = a 이면 
ab는 친화쌍이라 하고 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는 친화쌍이 됩니다.

10000 이하의 친화수들을 모두 찾아서 그 합을 구하세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
result = 0
 
for i in range(210001):
    sumNo1 = 0
    sumNo2 = 0
    for j in range(1, i):
        if i % j ==0:
            sumNo1 += j
    for j in range(1, sumNo1):
        if sumNo1 % j == 0:
            sumNo2 += j
    if i == sumNo2 and i != sumNo1:
        result += i
 
print result
 
 
cs


C:\Users\soicem's com\Desktop>python test.py

31626

'* Computer Science > Project Euler' 카테고리의 다른 글

project euler 25. problem  (0) 2016.08.10
project euler 22. problem  (0) 2016.08.03
project euler 20. problem  (0) 2016.07.29
project euler 19. problem  (0) 2016.07.29
project euler 18. problem  (0) 2016.07.28