美文网首页
first 10-digit prime found in co

first 10-digit prime found in co

作者: 还是橘子派 | 来源:发表于2018-10-05 18:43 被阅读290次

    今天重温了一下互联网时代这部纪录片,看到了google曾经的一个招聘广告。原题目为:{first 10-digit prime found in consecutive digits of e}.com。意思是在常数e的连续数字中找到第一个10位数的质数,记得大一的时候就看到过这个题目,但是由于水平有限,当时没能做的出来,四年过去了,水平自然与当时相比有了较大的提高,那么便来试试这道题。

    已知常数e是一个无限不循环的小数,它有多种计算方法,例如:极限计算法(如图1的计算公式),级数展开计算法(图2),积分模拟法(如图3,阴影部分的面积=1),等等。

    图 1 图 2 图 3

    在本次求解的过程中,使用的是第二种方法,即:级数展开计算法。在程序运行时,需要输入三个参数,分别是x(公式中的x),n(要计算到第几项,值越大,精度越高)以及要精确的小数的位数。

    运行效果如图4所示(输入的三个参数分别为:1, 1000, 200):

    图 4

    运行结果如图5:

    图 5

    根据计算的结果可以知道,第一个10位的素数为:7427466391(那么很显然google的招聘地址为:7427466391.com。不过现在好像已经不能访问了~_~)。程序会打印出在该有效位数的情况下的所有的10位数的素数,不过我们只看第一个就好啦。

    以下是代码(本代码使用了python的decimal库来处理一些高精度数字):

    
    import math;
    
    from decimal import *;
    #求n的阶乘
    def myfact(n):
    
      if n < 2:
    
        return 1;
    
      else:
    
        return n * myfact(n-1);
    #判断n是否为质数
    def is_prime(n):
    
      if n == 0 or n == 1:
    
        return False;
    
      q = int(math.sqrt(n))+1;
    
      for i in range(2, q):
    
        if n % i == 0:
    
          return False;
    
      return True;
    #程序入口
    if __name__ == '__main__':
    
      print "please input x:";
    
      x = input();
    
      print "please input n:";
    
      n = input();
    
      print "please input Decimal point:";
    
      point_n = input();
    
      getcontext().prec = point_n;
    
      result = Decimal('1.0');
    
      for i in range(1, n):
    
        result = result + Decimal(str(pow(x,i))) / Decimal(myfact(i));
    
      print "e = ", result;
    
      str_digit = str(result);
    
      for i in range(2, len(str_digit)-10):
    
        str_a = str_digit[i:i+10];
    
        if is_prime(int(str_a)):
    
          print str_a;
    
    

    总结:在测试不同的输入参数的过程中,发现当有效位数为100的时候,是不存在10位素数的,当有效位数为120的时候,刚好出现一个素数,那么也就是说常数e的第一个10位的素数介于小数点后100~120位之间。

    相关文章

      网友评论

          本文标题:first 10-digit prime found in co

          本文链接:https://www.haomeiwen.com/subject/kywqaftx.html