【发布时间】:2015-05-20 21:29:55
【问题描述】:
所以我创建了一个程序来生成一个数字并检查它是否是素数,但是我想得到一个更大的素数。当前的程序对高达 2ish 百万的质数运行迅速。
def is_Prime(num):
if(num < 2):
return False
elif (num == 2):
return True
if(num%2 == 0):
return False
for i in range(3, int(num**0.5)+1, 2):
if(num%i == 0):
return False
return True
bigPrime = 0;
for i in range(1000000):
possiblePrime = (2*i) +1
if(is_Prime(possiblePrime)):
bigPrime = possiblePrime
print(bigPrime)
我写的 bigPrime 部分
possiblePrime = (2*i) + 1
是我的计算机科学老师告诉我的一种算法,它擅长生成素数。
非常感谢我的 is_Prime 函数或生成算法的任何帮助。
【问题讨论】:
-
问题是在大于 100 万的素数之后速度非常慢
-
您是要修筛子,还是要更好的算法?我相信,如果你使用像费马素性检验这样的东西,你可以做得比筛子好得多。
标签: python performance python-3.x primes sieve-of-eratosthenes