печать очень большого числа в python занимает вечность - PullRequest
0 голосов
/ 27 мая 2020

Я хотел вычислить очень большое число, и, поскольку python поддерживает произвольно большие числа, я подумал, что это идеально.

Итак, вот оно:

import math
x=2**24
y=3840*2160
z=x**y
print("z is calculated")
print(z)

Ну, последнее, что я вижу, это "z вычислено", так что проблема не в самом вычислении.

Но даже через час я не вижу другого вывода.

Так может кто-нибудь объяснить, что здесь происходит?

PS: z имеет около 60 миллионов цифр ...

1 Ответ

0 голосов
/ 27 мая 2020

Итак, это ожидаемое поведение и «не исправит».

Алгоритм преобразования целого числа в строку имеет квадратичную c сложность, и улучшение требует слишком больших усилий, поскольку это случается так редко.

В качестве обходного пути мне было рекомендовано использовать такой пакет, как GMP, который, кажется, лучше подходит.

Я просто надеюсь, что это не откроет дверь для DOS-атак на серверы, где злоумышленники могут предоставить такое число в качестве входных данных. достаточно, если сервер хочет зарегистрировать это число, чтобы он завис.

...