{first 10-digit prime found in consecutive digits e}.com

将问题分解为2个:

一、如何算出或者找到足够精确的e?

1)e小数后100万位

  1. 计算公式:


    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)

具体题目求解方法做出来了再贴上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容