编写本程序是为了解决Project Euler Problem 27: Project Euler Problem 27
以下是代码:
ab=[0,0]
b_list=[]
for x in range(2,1000):
fact=1
y=2
while y*y<=x:
if x==2:
break
if x%y==0:
fact+=1
break
y+=1
if fact==1:
b_list.append(x)
number=0
max_=0
for a in range(-999,1000):
for b in b_list:
if a<=-b:
continue
n=0
num_of_primes=0
while True:
number=((n*n)+(a*n)+b)
n+=1
print number
if number>0:
factors=1
div=2
while div*div<=number:
if number==2:
break
if number%div==0:
factors+=1
break
div+=1
if factors==1:
num_of_primes+=1
else:
break
if max_<num_of_primes:
max_=num_of_primes
ab[0]=a
ab[1]=b
print ab[0]*ab[1]
但是当我运行此代码时,代码在= -63处停止而不提供任何输出。任何人都能说明为什么会这样吗?
答案 0 :(得分:0)
我想你可以多考虑一下这个问题。此外,您的代码看起来有点迟缓。如果您编写一些函数而不是一次性完成所有操作,它可能会有所帮助。我在那里看到了很多代码重复
无论如何,这是我的两分钱:
程序可能无限期地停留在while True:
循环中,因为您只在number <= 0
时突破循环。我没有过多地关注您的代码,但是您是否打算使用while True:
周期内的break
语句突破while div*div<=number:
循环?这是不可能的。你很可能需要一个变量来检测你是否过早退出循环然后从外循环中断。否则,python循环的else
子句可能会以某种方式提供帮助(参见Control Flow in Python)。