项目euler 12 python代码不运行,是慢还是什么?

时间:2015-05-03 14:40:45

标签: python python-3.x

def num_of_divisors(x):
    k=0
    b=x

    while x%2==0:
        x=x//2
        k=k+1
    z=1
    while x!=1:
        for y in range(3,b,2):
            a=0
            while x%y==0:
                x=x//y
                a=a+1
            z=z*(a+1)
    return(z*(k+1))

def triangular(n):
    return(n*(n+1)//2)

for n in range(1,10000):
    jk=triangular(n)
    if num_of_divisors(jk)>500:
        print(triangular(n))
        break
问题是:

  

通过添加自然数来生成三角数的序列。所以第7个三角形数字是1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.前十个术语是:

     

1,3,6,10,15,21,28,36,45,55,......

     

让我们列出前七个三角形数字的因子:

     

1:1

     

3:1,3

     

6:1,2,3,6

     

10:1,2,5,10

     15:1,3,5,15

     

21:1,3,7,21

     

28:1,2,4,7,14,28

     

我们可以看到28是第一个超过五个除数的三角形数。

     

第一个三角形数的值超过500个除数是多少?

问题是找到超过500个除数的第一个三角数。

我单独检查了num_of_divisors()函数,它可以正常工作。我还检查了num_of_divisors(76576500),它正确返回576。

三角函数也能正常工作。

但是上面的程序没有运行。所以问题在于循环。但它是什么?我的意思是,它运行但没有任何反应。我认为它可能会很慢,所以我用1代替500,但它不起作用!有什么问题?

0 个答案:

没有答案