我正在尝试解决 Problem 21 from Project Euler .我认为我已经正确地写下了所有内容。但是,我无法得到最终的答案,因为程序没有完全执行。
def d(num):
SUM = 0
for i in range(1,num):
if num % i == 0:
SUM += i
return SUM
SUM = 0
for a in range(1,10000):
for b in range(1,10000):
if a != b:
if d(a) == b and d(b) == a:
SUM += a+b
print(SUM)
请您参考如下方法:
for b in range(1, 10000)
循环是不必要的,因为你知道最多有一个合适的 b
, 如果存在,则等于 d(a)
.
另外,注意计算每个 a
和 b
在你的决赛中两次 SUM
.
SUM = 0
for a in range(1,10000):
b = d(a)
if a != b and d(b) == a:
SUM += a+b
print(SUM//2)