import random
class myClass:
def amicableNumbers(self):
sum1=0
sum2=0
num1=1
num2=1
z= 2*(10**7956785)
zz= z+100000000
while (sum1 != num2 and sum2 != num1):
num1,num2= random.randint(z,zz), random.randint(z,zz)
for i in range(1,num1):
if(num1 % i == 0):
sum1+=i
for i in range(1,num2):
if(num2 % i == 0):
sum2+=i
if(sum1 == num2 and sum2 == num1):
print(num1,'and',num2,"are Amicable Numbers")
else:
sum1=0
sum2=0
def main():
obj1=myClass()
obj1.amicableNumbers()
if "__main__" :
main()
我以前问过这个问题,但比以前需要更多的阐述。这些建议的大意是"你检查过它是否真的会是真的吗"。我检查过了。
您正在处理一些非常大的数字。我认为当for循环运行这么多迭代时,它总是会有点慢。只是做这个计算:
z=2*(10**7956785)
当我运行它时,花了大约6秒。
这里有一个答案,他们避免了嵌套循环。然而,他们使用的是较小的数字。我也会查看这个指南,其中显示了不同的算法。
我本想把这个作为评论发布的,但我的声誉还不够高。