Обратите внимание, что e — трансцендентное число (на тайском языке оно называется "จำนวนอดิศัย")

Трансцендентное число — это (возможно, комплексное) число, которое не является корнем какого-либо целочисленного многочлена, а это означает, что оно не является алгебраическим числом любой степени. . Каждое действительное трансцендентное число также должно быть иррациональным, поскольку рациональное число по определению является алгебраическим числом первой степени.

в том же значении не является корнем

с кодом вольфрама

Генеральный директор Wolfram Research и автор A New Kind of Science Стивен Вольфрам прислал решение в виде одной строки кода Mathematica (язык Wolfram):

Выберите[FromDigits/@Partition[First[RealDigits[E,10,1000]],10,1],PrimeQ,1]

порядок проверки моего кода на языке Wolfram:

PrimeQ[Table[Mod[Floor[10^(n + 10) Exp[1]], 10¹⁰], {n, 0, 100}]]

ответ показывает, что первое 10-значное простое число в последовательных цифрах e начинается с 98-й цифры, которая точно отвечает

с кодом питона


import numpy
import math

def prime(a):
    if a == 2: return True
    if a % 2 == 0: return False
    if a < 2: return False
    i = 2
    n = math.sqrt(a) + 1
    while(i < n):
        if a % i == 0:
            return False
        i += 1
    return True

def prime_e():
    e = '%0.51f' % math.exp(1)
    e = e.replace("2.","")
    for i in range(len(e)):
        x = int(e[i:10+i])
        if prime(x):
            return [i, x]

print prime_e()

вывод [20, 5598298427]

проверить с помощью языка wolfram

с PrimeQ[5598298427]

и Table[Mod[Floor[10^(n + 10) Exp[1]], 10¹⁰], {n, 0, 100}]

ответ простой, но не точный относительно действительного значения e из числового округления в процессе кодирования нельзя использовать этот код в диапазоне 100 последовательных цифр e.

попробуйте с кодом Python расширения серии Эйлера

import operator
import decimal as dc

def edigits(p):
    dc.getcontext().prec = p
    factorial = 1
    euler = 2
    for x in range(2, 150):
        factorial *= x
        euler += dc.Decimal(str(1.0))/dc.Decimal(str(factorial))
    return euler

estring = edigits(150).to_eng_string()[2:]

for i in range(len(estring)-10):
    x = int(reduce(operator.add,estring[i:i+10]))
    if isprime(x):
        print x
        print i
        break

выход

7427466391
98

в заключение, что алгоритм и эффект округления с ответом на функцию пола на языке вольфрама и расширение ряда Эйлера в коде Python имеют точность в диапазоне 100 последовательных цифр e.