我已经为生成素数制作了一个筛子。我正在进行一个关于RSA的学校项目,其中包括一些编程。我将使用这些素数来构建RSA系统,但因为这是我的论文,安全性并不是非常重要。然而,大素数更具挑战性,我很喜欢这个。
我使用的代码:
我相信有更快的方法来生成质数,但是我现在对改进代码不太感兴趣。当我运行这个函数时,它可以很好地生成七位质数,但是当我想要更多时,它就变得非常慢。我的计算机(8gb内存)给出了一个没有足够内存的消息。我在另一个工具Processing中使用了相同的算法。Processing非常快,但它不能识别超过10位数的数字。我还注意到,在我生成我的计算机能够计算的质数时,打印速度很慢。
我开始在互联网上寻找解决方案,并发现将程序编译会加快进程,但我不确定它是否只会加快解释部分还是计算和打印部分也会加速。我还发现了一些关于numpy的内容,涉及数组,但我不确定这是否会显著加快我的功能。
如何更快地找到质数?
def Zeef(a):
import math
upperBound = a
upperBoundSquareRoot = int(math.sqrt(upperBound))
isPrime = [1 for m in range (0,upperBound+1)]
for m in range(2,upperBoundSquareRoot+1):
if (isPrime[m]==1):
for k in range(m*m,upperBound+1,m):
isPrime[k] = 0;
print("Priemgetallen : ")
numberofPrimes = 0
for m in range(2,upperBound+1):
if (isPrime[m] ==1):
print(m)
numberofPrimes = numberofPrimes+1
print("Aantal = " , numberofPrimes);
a=input("Alle priemgetallen tot: ")
aa=int(a)
Priemen = Zeef(aa)
我相信有更快的方法来生成质数,但是我现在对改进代码不太感兴趣。当我运行这个函数时,它可以很好地生成七位质数,但是当我想要更多时,它就变得非常慢。我的计算机(8gb内存)给出了一个没有足够内存的消息。我在另一个工具Processing中使用了相同的算法。Processing非常快,但它不能识别超过10位数的数字。我还注意到,在我生成我的计算机能够计算的质数时,打印速度很慢。
我开始在互联网上寻找解决方案,并发现将程序编译会加快进程,但我不确定它是否只会加快解释部分还是计算和打印部分也会加速。我还发现了一些关于numpy的内容,涉及数组,但我不确定这是否会显著加快我的功能。
如何更快地找到质数?