Es gibt bestehende gcd
Implementierungen in Python, und LCM ist in Bezug auf gcd
definierbar, so dass Sie genauso gut vermeiden können, das Rad neu zu erfinden. Im Einzelnen:
ggT (a, b) x LCM (a, b) = a × b
mit Python 3.5 und höher, wird eine beschleunigte gcd
Funktion auf dem math
Modul, so lcm
kann vereinfacht zu:
from math import gcd
def getLCM(a, b):
return a * b // gcd(a, b)
auf älteren Python, ist es nicht beschleunigt, sondern fractions.gcd
ist eine anständige Implementierung für Sie zur Verfügung gestellt, so dass Sie es stattdessen verwenden können, oder die bestmöglichenzu verwendenauf, was Version Sie laufen auf einem verschachtelten Importversuch funktioniert:
try:
from math import gcd
except ImportError:
from fractions import gcd
Ihre nlcm
Schleife auch vereinfacht werden: Sie müssen manuell, nur Schleife nicht destruktiv iterieren:
def nlcm(num):
temp = 1
for x in num:
temp = getLCM(temp, x)
return temp
Or wenn Sie bekommen klug, verwenden Sie reduce
(functools.reduce
auf Python 3.x), da es tut genau das, was das vereinfachte Schleife bereits tut:
from functools import reduce
def nlcm(nums):
return reduce(getLCM, nums, 1)
Couldn‘ t Sie finden etwas anderes in diesem 0.023 Sekunden, die es dauerte, um das Programm zu starten? Vielleicht schnappst du dir einen Kaffee oder spielst mit den Kindern :-) – paxdiablo
Ich bekomme sofort eine Antwort auf meine Maschine. Hast du Timing in Millisekunden? – 0TTT0
Vielleicht ist die Nummer von num groß, mein Code ist langsam. Also muss ich schnell meinen Code bekommen –