Что делать если numexpr не работет с большой степенью?

Когда я пишу большое число и возвожу тоже в большую стерпеть мне ничего не выводится а когда я закрываю скрипт с помою ctrl+c то мне выдаёт ошибку KeyboardInterrupt. except ловит исключение но оно срабатывает только после ctrl+c, при повторном нажатии всё закрывается

import numexpr

math = input("> ")
count_math = numexpr.evaluate(math)
print(count_math)

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Времена вычисления и печати выражения 999999**999999 в Питоне. Меньше пяти секунд чтобы вычислить степень:

$ time python -c 'print((999999**999999).bit_length())'
19931548

real    0m4.435s
user    0m4.420s
sys 0m0.012s

Около восьми минут чтобы вычислить и напечатать:

$ time python -c 'print(len(str(999999**999999)))'
5999994

real    7m56.762s
user    7m56.664s
sys 0m0.048s

В Питоне неэффективная печать больших целых чисел к сожалению. Исправить можно поставив gmpy:

import gmpy


n = gmpy.mpz(999999)
m = n ** n
print(len(str(m)))

Пара секунд на вычисления и печать:

$ time python gmpy_sample.py
5999994

real  0m1.232s
user  0m1.216s
sys   0m0.020s
→ Ссылка