Finden Sie Primfaktoren in Python

Manav Narula 21 Juni 2023
  1. Überblick über die Primfaktorzerlegung
  2. Verschiedene Ansätze zum Finden von Primfaktoren in Python
Finden Sie Primfaktoren in Python

Dieses Tutorial zeigt, wie man eine Primfaktorzerlegung in Python durchführt.

Überblick über die Primfaktorzerlegung

In der Mathematik sind Faktoren einer Zahl diejenigen Zahlen, die die gegebene Zahl teilen können und einen Rest von Null hinterlassen.

Primzahlen sind eindeutige Zahlen mit nur zwei Faktoren, einem und der Zahl selbst. Einige Beispiele für solche Zahlen sind 3,7,11,13 und mehr.

Primfaktorzerlegung bezieht sich auf das Finden aller Primzahlen, die sich multiplizieren, um die ursprüngliche Zahl zu bilden. Wir können ein einfaches Beispiel für die Zahl 6 betrachten.

Die Primfaktorzerlegung dieser Zahl ergibt zwei Faktoren, 2 und 3.

Verschiedene Ansätze zum Finden von Primfaktoren in Python

Wir können Primfaktoren der angegebenen Zahl auf verschiedene Weise finden. Dieser Artikel zeigt drei Methoden, die unten aufgeführt sind:

  • Erstellen Sie eine benutzerdefinierte Funktion
  • Benutze das Sieb des Eratosthenes
  • Verwenden Sie das Modul primefac

Beginnen wir mit dem Erstellen einer benutzerdefinierten Funktion in Python.

Benutzerdefinierte Funktion zur Durchführung der Primfaktorzerlegung

In der Mathematik ist der grundlegendste Ansatz zur Primfaktorzerlegung die wiederholte Division. Wir teilen die Zahl wiederholt durch die Primzahlen. Wir können dies in Python mit verschachtelten Schleifen implementieren.

Die erste Schleife bestimmt, ob eine Zahl eine Primzahl ist oder nicht. Die zweite Schleife teilt diese Primzahl und die gegebene Zahl.

Wenn der Rest Null ist, hängen wir die Primzahl an eine Liste an. Die Funktion gibt die endgültige Liste zurück. Siehe Code unten.

def p_factorization(n):
    i = 2
    lst = []
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            lst.append(i)
    if n > 1:
        lst.append(n)
    return lst


print(p_factorization(20))

Ausgang:

[2, 2, 5]

Im obigen Beispiel haben wir die Primfaktorzerlegung von 20 zurückgegeben. Der Divisionsoperator // stellt sicher, dass der zurückgegebene Rest eine ganze Zahl ist.

Verwenden Sie das Sieb des Eratosthenes, um die Primfaktorzerlegung durchzuführen

Der Algorithmus Sieb des Eratosthenes gibt alle Primzahlen unterhalb einer gegebenen Zahl zurück.

Es markiert die Werte, die kleiner als die angegebene Zahl sind, und ist durch das Quadrat der Primzahlen teilbar, um alle Primzahlen zurückzugeben, die kleiner als die angegebene Zahl sind.

Wir können es verwenden, um eine Primfaktorzerlegung in Python durchzuführen. Zuerst finden wir die Primzahlen unter der erforderlichen Zahl und dividieren sie dann durch die angegebene Zahl, um ihre Primfaktorzerlegung zu sehen.

Sehen Sie sich den folgenden Codezaun als Beispiel an:

def sieve_of_erast(number):
    maximum = number + 1
    d = dict()
    for i in range(2, maximum):
        d[i] = True

    for i in d:
        factors = range(i, maximum, i)
        for f in factors[1:]:
            d[f] = False
    lst = [i for i in d if d[i] == True]
    return lst


def p_factorization(number):
    x = number
    res = []
    lst = sieve_of_erast(number)
    i = 0
    while i < len(lst):
        if x % lst[i] == 0:
            x = x // lst[i]
            res.append(lst[i])
            i = 0
            if x == 1:
                break
        else:
            i = i + 1
    return res


print(p_factorization(20))

Ausgang:

[2, 2, 5]

Im obigen Codebeispiel erstellen wir zunächst eine Funktion, die das Sieb des Eratosthenes implementiert, um die Primzahlen unterhalb 20 zu finden.

Dann erstellen wir eine weitere Funktion, die diese Liste von Primzahlen verwendet, um die Primfaktorzerlegung derselben zurückzugeben.

Verwenden Sie das primefac-Modul, um die Primfaktorzerlegung durchzuführen

Das Modul primefac dient zur Berechnung von Primzahlen. Es kann umfangreiche Berechnungen effizient handhaben.

Wir können die Funktion primefac() dieses Moduls für die Primfaktorzerlegung verwenden. Sie liefert das Generator-Objekt zurück, das mit dem Konstruktor list in eine Liste umgewandelt werden kann.

Siehe den folgenden Code:

import primefac

print(list(primefac.primefac(20)))

Ausgang:

[2, 2, 5]
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn