将问题分解为2个:
一、如何算出或者找到足够精确的e?
-
计算公式:
二、如何找到第一个10位素数
1)从第10位开始,计算前10为是否是质数。如果不是,则去掉第一位,增加最末一位,再判断,直到结果为真。
2)判断是否为素数:能被除了1和自身以外任意数字整除都不行
对于之前素数算法的优化:
上篇文章中,内部参数一直循环到了p-1无法整除才算证明为素数,但实际上,只要做到 int(p/2)就可证明这是个素数了,因为所有大于int(p/2) 的数,P除以的结果一定在(1,2)之间。
这样调整了代码之后,寻找打印素数的效率快了一倍。
def getprim(n):
p=3
x=0
while(x<n):
result=True
for i in range(2,int(p/2)): #除数的上限设为(p/2)取整
if(p%i==0): #如果p可以被i整除
result=False #则不是素数,返回false
if result==True: #如果算出来是素数
print(p) #则打印出来
x=x+1
rst=p
p+=2
print(rst)
具体题目求解方法做出来了再贴上。