Ich experimentierte mit der Multiplikation großer Zahlen in Python. Für meinen Zweck habe ich versucht zu bewerten.Wie man große Zahlen schneller multipliziert?
Jetzt läuft meine Frage darauf hinaus, wie man Zahlen in Python schneller multipliziert. ist es schneller mit Float zu tun? Die Antwort scheint nein. Nehmen Sie ein einfacheres Beispiel mit
n * (n + 1)/2
Meine Idee war, dass der folgende Code ist schneller
product = 1
if n % 2 == 0:
product *= n/2
product *= n
else:
product *= (n+1)/2
product *= n
return product
Warum sollte dies schneller sein? Nun, Sie müssten die Nummer n*(n+1)
nicht durch zwei teilen. Allerdings verschwendet man eine Rechnung mit der Nummer modulo2. Vielleicht ist try exception
schneller?
Also meine Frage läuft auf. Wie berechnet man das Produkt und die Teilung sehr großer Zahlen in Python? Hier ist mein Arbeitscode. Keine speziellen Geschwindigkeitsverbesserungen für diesen Code erforderlich. Aber die breitere Frage, wie man mit der Division und Multiplikation großer Zahlen umgehen soll. Meine Nummer ist um 10^(10^6)
atm.
def spiral_sum_fast(num):
rem = num % 6
if rem % 2 == 0:
raise Exception("The sidelength must be a odd number")
odd = 1 + num/2
odd_squared = 2 * odd**2
if rem % 3 == 0:
temp = odd/3
temp *= 8 * odd_squared + 14
else:
temp = (4 * odd_squared + 7)/3
temp *= 2 * odd
return temp - 3 * odd_squared - 3
if __name__ == '__main__':
k = 10**(10**6) + 1
spiral_sum_fast(k)
Das ganze 'Produkt = 1; wenn ... 'Block könnte einfach' Produkt = (n + n% 2)/2 * n 'sein. – TigerhawkT3
Aber ist das schneller für große Zahlen? – N3buchadnezzar
Dies könnte sich als aufschlussreich und lehrreich erweisen http://stackoverflow.com/questions/538551/handling-yy-large-numbers-in-python – glls