Sto cercando di calcolare alcuni num1**num2
in Python. Ma il problema è cheè 93192289535368032L
e num2
è 84585482668812077L
, che sono numeri molto grandi.pow o ** per un numero molto grande in Python
Ho provato diversi metodi come segue: Innanzitutto, ho provato a calcolarlo utilizzando l'operatore **
. Ma ci è voluto troppo tempo (ho aspettato circa 2 ore, ma non ho ottenuto alcun risultato).
In secondo luogo, ho usato math.pow(num1, num2)
. Ma ho ottenuto questo:
Traceback (most recent call last): File "<pyshell#23>", line 1, in <module>
math.pow(84585482668812077L, 93192289535368032L)
OverflowError: math range error
Infine, ho usato numpy.power
:
numpy.power(84585482668812077, 93192289535368032)
-9223372036854775808
Come vedete, mi ha dato meno.
Quello che voglio veramente fare è result = (num1**num2)
e poi lo result % num3
. Quindi, ho bisogno di calcolare questo valore di potenza in modo efficiente.
Come posso fare questo?
Dal momento che si sta facendo '(num1 num2 **)% num3', si dovrebbe esaminare la generalizzazione del' di Fermat Litte Theorem'. Cercalo su wikipedia – sshashank124
@ sshashank124 Grazie per il buon riferimento. – GoodGJ