为什么我的Euler 12项目代码这么慢?

2024-10-02 12:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

def trisum():
    divs = 1
    great = 1
    n = 1
    while divs < 500:
        divs = 1
        n += 1
        tri = sum(i for i in range(1,n+1))
        #divisors = [tri]
        for x in range(1,tri):
            if tri%x == 0:
                #divisors.append(x)
                divs += 1
            else:
                pass
        if divs > great:
            great = tri
            print(great)
        #grVal = sorted(divisors, reverse=True)        
        #print("{}: {}".format(divs,tri))
    print(great)

trisum()
s = input("")

这是我解三角形值的代码,它可以找到500个以上的除数,它适用于较小的数字,但对于500个,它需要很长时间,我也没有得到答案。我90%的代码适用于所有的除数,我从一个列表变成只给最大的三角形和赋值一个变量。在

为什么我的代码还这么慢?任何帮助都将不胜感激,谢谢。在


Tags: 代码inforifdefrangetriprint
1条回答
网友
1楼 · 发布于 2024-10-02 12:29:10

你可以试着通过简单的加法来减少求和

i = 1
tri = i
while divisors < 100:
    tri += i
    # do something
    i += 1

另外,求除数时,不要上到tri,要上到

^{pr2}$

因为能将任何一个数等分的最大数是这个数的一半。[希望这有帮助,我无法测试,因为我正在使用我的手机]

相关问题 更多 >

    热门问题