我在做Project Euler's problem 35,我的代碼失敗,最大值超過999,但在此之前工作正常。Python程序失敗,輸入大於3位數
「計數」停在22,沒有結束999計算任何素數
import itertools
import time
def isPrime(n):
if n % 2 == 0:
return n == 2
d = 3
while d * d <= n:
if n % d == 0:
return False
d += 2
return True
t=time.time()
count=0
Range=1000000
for a in range(2,Range):
if isPrime(a):
alist=[]
perms=[]
for n in str(a):
alist.append(n)
for n in itertools.permutations(alist):
num=int("".join(n))
perms.append(num)
if all(isPrime(l) for l in perms):
count+=1
print("there are ", count, " circular primes")
print("time=",time.time()-t,"s")
任何人都可以明白爲什麼發生這種情況?
定義 「失敗」?它是否拋出異常,錯誤地計算? – 2014-01-06 05:01:11
那麼,你有沒有嘗試輸出素數列表?你怎麼知道22錯了?等等... – 2014-01-06 05:03:52
是的,我嘗試了所有這些,圓形素數的維基給出了大量的值。 – user3164199