Итак, ради интереса, я хотел увидеть самое большое простое число, которое мы обнаружили, своими собственными глазами (2 ^ 277,232,917 - 1 согласно это ), которое представляет собой число 23,249,425 цифр.О, парень.Поэтому я начал с ручного вычисления числа в Python: 2**277232917-1
, которое дало бы мне ответ ... в конце концов ... когда-нибудь.Прождав полчаса, пока одно из моих ядер работало все время, я начал искать более быстрое решение для решения показателей.Я нашел этот драгоценный камень в Википедии, известный как
Вычисление по квадратам
def exp_by_squaring(x, n):
if n<0:
return exp_by_squaring(1 / x, -n)
elif x==0:
return 1
elif x==1:
return x
elif n%2==0:
return exp_by_squaring(x * x, n / 2)
elif not n%2==0:
return x * exp_by_squaring(x * x, (n - 1) / 2)
После подключения его к консоли python3 и ввода t=exp_by_squaring(2, 277232917)-1
и жду .. о, подождите, это сделано!Я люблю эту концепцию.Теперь с этим номером я могу print(str(t))
, и он снова замерз.Предположим, я могу разрешить запись в файл за ночь f=open("LargestPrime", "w") f.write(str(t)) f.close()
.На следующее утро с одним текстовым файлом 23,2 МБ , пытаясь открыть его, он просто зависает и снова душит ядро.Я думаю, это слишком много, чтобы даже показать.
Как бы вы этого достигли?Не могли бы вы разбить int
на отдельные части, а затем преобразовать их в строки, чтобы записать их в отдельные файлы?Сохраню ли я его в другом формате?Как я могу сократить время, необходимое для преобразования этой цифры 23M + int в строку?Как я мог практически отобразить такое большое число?Я что-то здесь упускаю?