这是我的主要发现算法,它有点像Eratosthenes的筛子,但仅从6n +/- 1的形式开始(除了2和3之外的所有素数都是某种形式)。我的算法能够取出大多数复合数,但是当运行以查找低于100的所有素数时,95仍然保留。这是唯一显示的复合数。
def primefinder(limit):
primes = [2, 3]
for i in range(1, (limit / 6 + 1)):
primes.append(6 * i - 1)
primes.append(6 * i + 1)
for i in primes:
if i > 24:
for x in primes:
if x <= i ** 0.5:
if i % x == 0:
primes.remove(i)
continue
else:
break
return primes
当以100的限制运行时,它返回以下列表:
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83, 89,95,97]
虽然它应该返回
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83, 89,97]
为什么不删除95?