[英]Prime number generator is not working Python
我想做的是:
但是我的結果是從1到1003的數字列表,它們跳過了3、4和5
這里有語義錯誤嗎?
#Prime number generator
def primenumber():
primelist = [1, 2]
num = 3
even = num%2
multi = 0
result = 0
while len(primelist) < 1000:
if even != 0:
oddnum = num
i = 2
halfodd = ((oddnum + 1)/2)
while i < halfodd:
i =+ 1
multi = oddnum%i
if multi == 0:
result += 1
if result != 0:
primelist.append(oddnum)
prime_num = oddnum
num += 1
print primelist
primenumber()
if result != 0:
由於result
是(假設是)您發現了多少個因素的計數,因此您需要
if result == 0:
當您前進到新的候選質數時,您也不會重置result
,您永遠不會重新計算even
,如果這樣做了,那么您將考慮兩次奇數。
這應該工作:
def primenumber():
primelist = [1, 2]
candidate = 3
while len(primelist) < 1000:
isCandidatePrime = True
if (candidate % 2 == 0): # if candidate is even, not a prime
isCandidatePrime = False
else:
for i in range(3, (candidate+1)/2, 2): # else check odds up to 1/2 candidate
if (candidate % i == 0): # if i divides it, not a prime
isCandidatePrime = False
break
if (isCandidatePrime):
primelist.append(candidate)
candidate += 1
print primelist
我認為有一些改進(僅檢查小於或等於候選者平方根的數字,僅檢查質數,而不是檢查所有不小於候選者平方根的數字),但我暫時不做討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.