0
我有我写了这个Python代码:Python - 为什么这个质数检查算法不起作用?
from math import *
limit = 100000
primes = [2]
for i in range(3, limit+1, 2):
is_prime = True
for j in range(3, floor(sqrt(i)), 2):
if i % j == 0:
is_prime = False
break
if is_prime: primes.append(i)
print(len(primes))
它说,有9676素数小于100 000,当它应该是9592.这给出了正确的答案,如果我只用i
取代floor(sqrt(i))
,但那么它非常缓慢。为什么我的算法不工作?
提示:查看您的'for j in ...'行,并尝试print(list(range(3,floor (sqrt(25)))))'在Python提示符处。 –