Что делать если 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