为什么即使是少量输入也要花费我的python代码?

时间:2016-08-19 22:34:24

标签: python

我是编程新手,我也是这个网站的新手。很抱歉,如果我的代码很愚蠢,而且我在浪费你的时间。我一直在尝试解决项目Euler Problem 12。在互联网的帮助下,我想出了一个算法,并在python中编写了一个代码。我试图概括它,以便它适用于所有数字不仅500.起初我有问题得到正确的输出,但是当我认为我修复它,它只会变得更糟,因为该程序需要永远运行。你能指出我做过的错误吗?

L = int(input("L="))
def number_of_divisors(n):
    global divisors
    global count
    global p
    divisors = 1    
    count = 0
    if n%2 == 0:
        while n%2 == 0:
            count += 1
            n=n/2
       divisors = divisors * count
    count = 0
    p = 3
    while n != 1:
        while n%p == 0:
            count +=1
            n = n/p
        p += 2
    divisors *= (count + 1)
    return divisors
def the_first_triangular_number_with_more_than_L_divisors(L):
    global total_divisors
    global n
    total_divisors , n = 1 , 1
    while total_divisors <= L:
        s = number_of_divisors(n+1)
        total_divisors *= s
        total_divisors = s
    n += 1
    return (n*(n+1))/2
x = the_first_triangular_number_with_more_than_L_divisors(L)
print(x) 

1 个答案:

答案 0 :(得分:1)

这可能是一个无限循环。如果它进入循环并且s&lt; = L,它将无限期地重复,因为最后一行(可能是拼写错误)。

while total_divisors <= L:
    s = number_of_divisors(n+1)
    total_divisors *= s
    total_divisors = s

这是一个非常密切反映你的答案的答案,你可以看看你是否完全被难倒:

http://code.jasonbhill.com/sage/project-euler-problem-12/