Skip to main content
 首页 » 编程设计

Python 解决 Project Euler 问题 #21 的速度似乎很慢

2024年11月01日1lexus

我正在尝试解决 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) .

另外,注意计算每个 ab在你的决赛中两次 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)