Ich habe versucht, einen super schnellen Code zu finden, der die Fakultät einer großen Zahl wie 70000 in 0,5 Sekunden berechnen kann, Mein eigener Code könnte es in 10 Sekunden tun Ich habe überall gesucht, jeder Code, den ich finde, hat ein Speicherfehlerproblem oder ist nicht so schnell wie ich es möchte. Kann mir jemand dabei helfen?Berechne Fakultät von großen Zahlen in 0,5 Sekunden mit Python
enter code here
import math
num =int(raw_input())
usefrm=0
if len(str(num)) > 2:
if int(str(num)[-2]) % 2 == 0:
usefrm = 'even'
else:
usefrm = 'odd'
else:
if num % 2 == 0:
usefrm = 'even1'
else:
usefrm = 'odd1'
def picknumber(num):
s = str(math.factorial(num))
l = []
for n in s:
if int(n) != 0:
l.append(int(n))
return l[-1]
def picknumber1(num):
s = str(num)
l = []
for n in s:
if int(n) != 0:
l.append(int(n))
return l[-1]
if usefrm == 'even':
e=picknumber1(6*picknumber(int(num/5))*picknumber(int(str(num)[-1])))
if usefrm == 'odd':
e=picknumber1(4*picknumber(int(num/5))*picknumber(int(str(num)[-1])))
else:
e=picknumber1(math.factorial(num))
print e
70000! ist absolut gigantisch. Welche Art von großen Nummer Bibliothek verwenden Sie? – Bathsheba
Mögliches Duplikat von http://stackoverflow.com/questions/1751334/fast-algorithms-for-computing-the-factorial (nur mit dem Python-Flag) – Mijago
Mit der GMPY-Bibliothek kann ich 70000 berechnen! in ungefähr 0.5 Sekunden auf dieser alten 2GHz Maschine. –