【发布时间】:2019-08-25 13:44:10
【问题描述】:
我试图找到具有 500 个除数的三角形数,但我不断收到此错误。如何解决。
import math
#I make a list of first 300 prime numbers
def compute():
z=[]
prime = [True for i in range(1990)]
p=2
while(p*p<=1990):
if(prime[p]==True):
for i in range(p*p,1990,p):
prime[i]= False
p=p+1
for p in range(2,1990):
if (prime[p]==True):
z.append(p)
return(z)
#for counting the number of factors. Here is where I face a problem in the code
def countfactor(n):
initial= n
factor=1
for i in range(0,n):
if z1[i]<=math.sqrt(n):
power=0
while(initial%z1[i]==0):
initial=initial/n
power=power+1
factor=factor*(power+1)
if initial>1:
factor=factor*2
return(factor)
#function for providing triangle number to the countfactor() function
def compute1():
i=1
while(True):
triangle=int(i*(i+1)/2)
factors =countfactor(triangle)
print(factors)
if factors>500:
print(triangle)
break
else:
i=i+1
if __name__ == "__main__":
z1=compute()
compute1()
实际结果应该是 76576500,但我收到错误“列表索引超出范围”。请说明错误以及解决方法。
【问题讨论】:
-
您好--看起来您已经发布了代码示例和预期/期望的行为。但是,您似乎没有尝试使用调试器来单步执行您的代码以了解它在做什么。请先这样做,因为它既可以解决您的问题,也可以让您提供更多详细信息以帮助他人回答问题。
-
您需要创建一个minimal reproducible example。至少,添加完整的错误消息。
标签: python python-3.x