我想做的是:
然而,我的结果是一个从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()
这应该起作用:
我认为有几个改进(只检查小于或等于候选数平方根的数字,只检查素数,而不是所有小于候选数平方根的数字),但我暂时不谈这些。你知道吗
因为
result
是(应该是)你发现了多少因子的计数,所以你需要当你前进到一个新的候选素数时,你也不会重置
result
,你永远不会重新计算even
,如果你这样做了,你会考虑两次奇数。你知道吗相关问题 更多 >
编程相关推荐