Próbuję obliczyć niektóre num1**num2
w Pythonie. Problem polega jednak na tym, że num1
to 93192289535368032L
i to , które są bardzo dużymi liczbami.pow lub ** dla bardzo dużej liczby w Pythonie
Próbowałem kilka metod w następujący sposób: Po pierwsze, próbowałem obliczyć go za pomocą operatora **
. Ale zajęło to zbyt dużo czasu (czekałem około 2 godzin, ale nie mam wyniku).
Po drugie, użyłem math.pow(num1, num2)
. Ale mam to:
Traceback (most recent call last): File "<pyshell#23>", line 1, in <module>
math.pow(84585482668812077L, 93192289535368032L)
OverflowError: math range error
Wreszcie, użyłem numpy.power
:
numpy.power(84585482668812077, 93192289535368032)
-9223372036854775808
Jak widać, to dał mi minusa.
Co naprawdę chcę zrobić, to result = (num1**num2)
, a następnie result % num3
. Muszę więc wydajnie obliczyć tę wartość mocy.
Jak mogę to zrobić?
Ponieważ robisz '(num1 ** num2)% num3', należy zajrzeć do uogólnienia' Fermata Litte Theorem'. Sprawdź na wikipedia – sshashank124
@ sshashank124 Dzięki za dobre referencje. – GoodGJ