Faktoren einer Zahl in Python mit maximaler Effizienz finden
Alle Faktoren einer Zahl zu finden, kann eine herausfordernde Aufgabe sein, insbesondere wenn es darum geht große Zahlen. In diesem Artikel wird eine effiziente Methode untersucht, um dies in Python 2.7 zu erreichen.
Optimaler Ansatz mithilfe der Faktorisierung
Um alle Faktoren einer Zahl zu finden, besteht der Schlüssel darin, sie aufzuschlüsseln in seine Primfaktoren. Sobald Sie die Primfaktoren kennen, ist es einfach, die restlichen Faktoren zu finden.
Der folgende Codeausschnitt verwendet diesen Ansatz:
<code class="python">from functools import reduce def factors(n): return set(reduce( list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))</code>
Diese Funktion akzeptiert eine Zahl n und gibt eine Menge zurück, die enthält alle seine Faktoren.
Den Algorithmus verstehen
Der Kern des Algorithmus liegt im Verständnis von [i, n//i] für i im Bereich(1, int(sqrt(n)) 1) wenn n % i == 0. Dieser Teil generiert Faktorpaare.
Für jede Zahl i von 1 bis zur Quadratwurzel von n wird geprüft, ob n durch teilbar ist ich ohne Rest. Wenn ja, werden sowohl i als auch n//i in das Paar aufgenommen, da sie beide Faktoren von n sind.
Optimierung des Suchbereichs
Der Grund, warum wir suchen bis zur Quadratwurzel von n gilt: Wenn i ein Faktor von n ist, muss auch sein Paarfaktor n//i in diesem Bereich liegen. Dies stellt sicher, dass uns keine Faktoren entgehen.
Umgang mit Duplikaten
Da perfekte Quadrate doppelte Faktoren haben (z. B. 4 hat die Faktoren 2 und 2), ist die Menge( ...) am Ende des Codeausschnitts entfernt alle Duplikate aus der Liste der Paare. Dadurch wird sichergestellt, dass wir einen sauberen Satz eindeutiger Faktoren erhalten.
Beispielverwendung
Um diese Funktion zu verwenden, übergeben Sie einfach die Zahl, die Sie faktorisieren möchten, als Argument:
<code class="python">result = factors(24) # -> {1, 2, 3, 4, 6, 8, 12, 24}</code>
Dadurch wird ein Satz zurückgegeben, der alle Faktoren der Zahl 24 enthält.
Das obige ist der detaillierte Inhalt vonWie finde ich effizient alle Faktoren einer Zahl in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!