繁体   English   中英

无论如何要加快此代码的速度,因为在 python 3.8 上运行大约需要 3-4 小时?

[英]anyway to speed this code up as it is taking around 3-4 hours to run on python 3.8?

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 秒。

这里有一个答案,他们避免了嵌套循环。 但是,他们使用的数字较小。 我还会查看指南,其中显示了不同的算法。

我会将此作为评论发布,但我的声誉还不够高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM