Ich bin nicht in der Lage, den folgenden Codeblock zu verstehen, auf dem ich diese Seite selbst gefunden habe. Es erstellt eine Funktion, um den größten Primfaktor einer gegebenen Zahl herauszufinden. Es ist unten angegeben:Größter Primfaktor einer gegebenen Zahl in Python
def prime_factors(n):
"""Returns all the prime factors of a positive integer"""
factors = []
d = 2
while n > 1:
while n % d == 0:
factors.append(d)
n /= d
d = d + 1
return factors
pfs = prime_factors(1000)
largest_prime_factor = max(pfs) # The largest element in the prime
Meine Zweifel, dass die Funktion prime_factors(n)
zurückkehren würde die Faktoren von n
und nicht der Primfaktoren, da die while-Schleife wird nur überprüft, ob d
ein Faktor von n
ist und nicht, wenn es auch ein Prime ist, wie es sein sollte.
Bitte weisen Sie darauf hin, wenn ich falsch liege und auch die Gründe hinter Ihrer Logik. Außerdem, wenn ich richtig liege, stellen Sie bitte einen geeigneten Code und die dahinter stehende Logik in einfachen Worten zur Verfügung. Versuchen Sie, den Code so einfach wie möglich zu halten.
Hier ist, wie ich dieses Problem nähern würde. Schritt 1: Ich würde das Programm mit Beispielen ausführen und sehen, ob es Faktoren oder Primfaktoren erzeugt. Schritt 2: Wenn ich feststelle, dass meine Vermutung falsch ist (und das Programm funktioniert wie angekündigt), würde ich das Programm selbst mit kleinen Zahlen durchgehen (n = 4, n = 6, n = 18 könnte interessant sein) und sehe Was ist los. –