Primfaktor-Zerlegung ver.1 der in Python eingegebenen Ganzzahlen

Einführung

Das zuvor erstellte "Programm zum Bestimmen, ob eine in Python eingegebene Zahl eine Primzahl ist" verfügt über eine Funktion, die eine Primfaktorzerlegung durchführt, wenn es sich um eine zusammengesetzte Zahl handelt. Ich habe es hinzugefügt.

Programmprinzip

Ich erinnerte mich an die Methode der Primfaktor-Zerlegung, die ich in der Grundschule gelernt hatte, und beschloss, mich weiterhin von der kleinsten Primzahl zu trennen. Erstellen Sie insbesondere eine Primzahlenliste mit SymPys Primerange und teilen Sie diese durch eine teilbare Zahl aus dieser Liste. Dann, als die Division bis zum Ende der Primzahlenliste durchgeführt wurde, war sie beendet.

Aktuelles Programm

from sympy import primerange
inn = n = int(input("Geben Sie die Nummer ein, die Sie überprüfen möchten, ob es sich um eine Primzahl handelt.>> "))
primlist = list(primerange(2,(inn+1) / 2)) #1
yaku = []

for i in primlist:
    while n % i == 0: #2
        n /= i
        yaku.append(i) #3

if not yaku: #4
    print(n, "Ist eine Primzahl.")
else:
    print(inn, "Ist eine zusammengesetzte Zahl und wenn sie in Primfaktoren zerlegt wird",yaku, "ist.")

Rauer Fluss

  1. Erstellen Sie eine Primzahlenliste bis (n + 1) / 2
  2. Suchen Sie eine teilbare Zahl in der Primzahlliste und teilen Sie die ganze Zahl n weiter, bis sie nicht mehr teilbar ist.
  3. Fügen Sie bei jeder Division die geteilte Primzahl zur Liste mit dem Namen Yaku hinzu.
  4. Wenn Yaku nichts enthält, wird es als Primzahl angezeigt. Wenn etwas enthalten ist, wird das Ergebnis der Primfaktorisierung angezeigt.

Was machst du eigentlich?

  1. Erstellt in # 1 mit Sympy wie zuvor.
  2. In # 2 ist es mit der while-Syntax möglich, die sofortige Teilung fortzusetzen, ohne if zu verwenden.
  3. Fügen Sie in # 3 die durch yaku geteilte Primzahl i hinzu, indem Sie .append (i) ausführen.
  4. In # 4 habe ich festgestellt, dass Yaku, wenn es eine Zahl enthält, eine zusammengesetzte Zahl ist. Insbesondere wenn Sie die if-Syntax verwenden und if ** not ** yaku festlegen, wenn yaku nichts enthält, wird die folgende Verarbeitung if gestartet.

Schwierigkeiten

Beim ersten Programmieren war der Bereich der von primerange () erstellten Primzahlenliste derselbe wie beim vorherigen Mal "primerange (2, int (n ** (1/2)) + 1)". Wenn dann die Eingabe-Ganzzahl "2 x Primzahl" war, wurden nur 2 zu Yaku hinzugefügt, und es gab ein Problem, dass die Primfaktorisierung nicht genau durchgeführt werden konnte. Insbesondere wenn ich eine Zahl wie 14 (2 × 7) eingegeben habe, war das Ergebnis "14 ist eine zusammengesetzte Zahl, und wenn sie in Primfaktoren zerlegt wird, ist es [2]. ] Ist herausgekommen. Daher setze ich den Bereich der Primzahlenliste auf "Primbereich (2, (inn + 1) / 2)". Auf diese Weise habe ich beschlossen, das vorherige Problem zu lösen. Zu diesem Zeitpunkt kann durch Hinzufügen von +1 zu inn eine Liste von Primzahlen bis zu einer Primzahl erstellt werden, selbst mit einer Ganzzahl von "2 x Primzahl". Insbesondere wenn 14 eingegeben wird, wird es Primerange (2, 7.5), so dass der Inhalt der Primelist [2, 3, 5, 7] wird. Wenn Sie nicht +1 ausführen, erhalten Sie den Primerange (2, 7), sodass der Inhalt der Primelist [2, 3, 5] ist und 7 nicht im Ergebnis der Primfaktorisierung enthalten ist, also eine genaue Primfaktorisierung Wird nicht möglich sein.

Reflexionen

Wenn der Erstellungsbereich der Primzahlenliste zu groß ist und die Eingabe-Ganzzahl groß wird (7 Stellen oder mehr), sinkt die Berechnungsgeschwindigkeit sofort. Daher möchte ich die Bereichseinstellung und die Methode der Primfaktor-Zerlegung ein wenig verbessern. Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

Primfaktor-Zerlegung ver.1 der in Python eingegebenen Ganzzahlen
Primfaktor-Zerlegung Version 2 der in Python eingegebenen Ganzzahlen
[Python 3] Primfaktor-Zerlegung in 14 Zeilen
Reversibles Verwürfeln von Ganzzahlen in Python
Projekt Euler # 10 "Summe der Primzahlen" in Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Primzahl in Python
Primzahl 2 in Python
Implementierung der schnellen Sortierung in Python
Bildpixel-Manipulation in Python
Zeitdelta in Python 2.7-Serie teilen
Unendlicher Primgenerator in Python3
MySQL-automatische Escape-Funktion von Parametern in Python
Umgang mit JSON-Dateien in Python
Implementierung eines Lebensspiels in Python
Audio-Wellenform-Anzeige in Python
Das Gesetz der Zahlen in Python
Implementierung der ursprünglichen Sortierung in Python
Ein Programm, das bestimmt, ob eine in Python eingegebene Zahl eine Primzahl ist
Konvertierung der Zeichenfolge <-> Datum (Datum, Datum / Uhrzeit) in Python
Projekt Euler # 3 "Maximale Primfaktoren" in Python
Überprüfen Sie das Verhalten des Zerstörers in Python
Übung, dies in Python zu verwenden (schlecht)
Ausgabebaumstruktur von Dateien in Python
Zeigen Sie eine Liste der Alphabete in Python 3 an
Vergleich japanischer Konvertierungsmodule in Python3
Zusammenfassung verschiedener for-Anweisungen in Python
Projekt Euler # 7 "1000 1. Primzahl" in Python
Das Ergebnis der Installation von Python auf Anaconda
Gang of Four (GoF) -Muster in Python
Grundlagen zum Ausführen von NoxPlayer in Python
Massenersatz von Zeichenfolgen in Python-Arrays
Projekt Euler # 16 "Summe der Kräfte" in Python
Traffic Safety-Kun: Erkennung von Verkehrszeichen in Python
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Ich habe mit Python nach einer Primzahl gesucht
Nicht logische Operatorverwendung von oder in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
Praktisches Beispiel für hexagonale Architektur in Python
Projekt Euler # 17 "Anzahl der Zeichen" in Python
Doppelte Pendelbewegungsgleichung in Python
Entfernen Sie DICOM-Bilder in Python
Status jedes Python-Verarbeitungssystems im Jahr 2020
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Geben Sie Python ein, um die algebraische Erweiterung zu implementieren (1) ~ Monoide, Gruppen, Ringe, ganzzahlige Ringe ~
Geben Sie die Anzahl der CPU-Kerne in Python aus
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Erhalten Sie einen Websocket der kabu station ® API in Python
Zusammenfassung zum Importieren von Dateien in Python 3
Unbeaufsichtigter Betrieb von Google Spreadsheets (usw.) in Python
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Primzahlaufzählung und Primzahlbeurteilung in Python
Kopieren Sie die Liste in Python
Zusammenfassung der Verwendung von MNIST mit Python
Umschreiben von Elementen in einer Listenschleife (Python)
Finden Sie in Python Primzahlen mit einem möglichst kurzen Code
DICOM-Bilder mit Python Part 2 entfernen