Primzahlbeurteilung mit Python

Einführung

Dies ist ein Artikel für Anfänger von Anfängern.

Ich habe das Problem auch dieses Mal gelöst und konnte es schließlich lösen. Deshalb schreibe ich diesen Artikel mit der Absicht, ihn als Memorandum zu teilen.

Dieses Mal erstellen wir ein Programm, um festzustellen, ob eine natürliche Zahl eine Primzahl ist!

Programmerstellung

Nun, ich werde es sofort erstellen.

Lassen Sie mich zunächst kurz erwähnen, was eine Primzahl ist.

・ Primzahl: 1 und eine Zahl, die nur durch die Zahl selbst geteilt werden kann (1 ist nicht enthalten)

Mit anderen Worten, ich dachte, es wäre gut, die Zahl durch die Zahl von 2 bis (die Zahl 1) zu teilen und den Rest zu überprüfen!

Daher definieren wir eine Funktion namens p_judge. (Der Grund für p ist, dass Primzahlen in mathematischen Problemen oft durch p dargestellt werden lol)

#Funktion definieren
def p_judge(a):

Lassen Sie uns nun darüber nachdenken, wie es verarbeitet werden soll. Zunächst besteht die Aufgabe darin, eine Zahl von 2 durch (die Zahl 1) zu ersetzen und zu teilen, sodass ** für die Aussage ** verwendet werden kann!

Außerdem verzweigt sich der Prozess wahrscheinlich, um festzustellen, ob es sich um eine Primzahl handelt oder nicht. Daher scheint es, dass ** if-Anweisung ** verwendet werden kann!

Von oben dachte ich, dass das Kombinieren für und wenn funktionieren würde.

Das folgende Programm zeigt den Vorgang

#Funktion definieren
def p_judge(a):
    for x in range(2,a):#Von 2 (Nummer zu überprüfen-Ersetzen Sie x bis 1)
        if a%x == 0:#Wenn a ÷ x teilbar ist
            print('False')#Ausgabe falsch
            return#Kehren Sie zum Aufrufer der Funktion zurück.
    print('True')#Nachdem Sie alle oben genannten Programme gelöscht haben, geben Sie True aus

Das sieht gut aus! !! Ich habe die Kommentare zum leichteren Verständnis ausführlich geschrieben. Wenn Sie einen Fehler machen, weisen Sie bitte darauf hin.

Dies vervollständigt die Gliederung! Alles, was Sie tun müssen, ist, die Eingabe zu platzieren, um den Wert zu erhalten, und eine weitere Beschreibung hinzuzufügen, um die genau definierte Funktion zu verwenden.

Das Folgende ist das abgeschlossene Programm

a = input()#Empfangen Sie den Wert (zu diesem Zeitpunkt erhalten Sie ihn als Zeichenfolge)
a = int(a)#Konvertieren Sie eine empfangene Zeichenfolge in eine Ganzzahl

def p_judge(a):
    for x in range(2,a):#Von 2 (Nummer zu überprüfen-Ersetzen Sie x bis 1)
        if a%x == 0:#Wenn a ÷ x teilbar ist
            print('False')#Ausgabe falsch
            return#Kehren Sie zum Aufrufer der Funktion zurück.

    print('True')#Nachdem Sie alle oben genannten Programme gelöscht haben, geben Sie True aus

p_judge(a)#Dann ist für a die Funktion p_Verwenden Sie Richter

Ja, es ist geschafft! !!

Beiseite

Ich habe lange gebraucht, um dieses Programm zu machen ... Weil ich nicht wusste, ob und wie ich zurückkehren sollte.

Ich dachte, ob und für welche Funktionen, also habe ich sie normalerweise zurückgegeben. Also wurde ich immer verrückt mit dem Fehler "Rückkehr außerhalb der Funktion"

Sie haben dies gelöst, indem Sie eine neue Funktion definiert haben. Ich bin noch ein Anfänger, daher gibt es viele Dinge, die ich nicht verstehe, aber ich denke, dass es auf diesem Niveau zu schwierig ist. Tohoho ...

Nachtrag

Wir haben einige Kommentare erhalten, daher werden wir das Programm ändern!

(1) Es ist besser, eine Funktion zu verwenden, die True und False anstelle von print zurückgibt.

→ Es scheint, dass Sie das Druckteil löschen und ändern sollten, um zurückzukehren.

(2) Es ist besser, die Verarbeitung zu betrachten, wenn 1, 0 oder eine negative Zahl als Argument angegeben wird.

→ Es scheint zu funktionieren, wenn Sie ein wenig mit der if-Anweisung spielen.

Wenn Sie diese ① und ② reflektieren, wird es vorerst so aussehen.

a = input()
a = int(a)

def p_judge(a):
    if a <= 1:#Wenn a kleiner oder gleich 1 ist
        return False#Gibt False zurück
    for x in range(3,a,2):#3 bis a-Ersetzen Sie x durch x, die um 2 bis 1 steigen
        if a%x == 0:
            return False#Gibt False zurück
        
    return True#Gibt True zurück

print(p_judge(a))

Dies ist der Teil, in dem der Kommentar geschrieben wird.

Ich habe versucht, es mit oder in eine if-Anweisung zu setzen, aber es hat nicht funktioniert und ich musste es in zwei Teile teilen ...

Diese beiden Punkte werden als nächstes korrigiert.

(3) Da gerade Zahlen keine anderen Primzahlen als 2 sind, kann die Verarbeitungszeit reduziert werden, indem nur 2 und gerade gerade verarbeitet und nur ungerade Zahlen wiederholt werden.

④ Sie können bis zur Quadratwurzel prüfen, ob sie teilbar ist.

Zuerst werden wir ③ korrigieren. Dies scheint gut zu sein, wenn Sie es erneut anhängen. Mit anderen Worten, gerade Zahlen außer 2 sollten ausgeschlossen werden. Das folgende Programm spiegelt dies wider

a = input()
a = int(a)

def p_judge(a):
    if a == 2:#Wenn a 2 ist
        return True#Gibt True zurück
    elif a <= 1 or a%2 == 0:#Wenn a kleiner oder gleich 1 ist oder a durch 2 teilbar ist
        return False#Gibt False zurück
    for x in range(3,a,2):
        if a%x == 0:
            return False
        
    return True

print(p_judge(a))

Übrigens, in Bezug auf ④ habe ich diese Tatsache zum ersten Mal selbst erfahren ... lol Wenn Sie mich fragen, ist das sicherlich der Fall. Bei synthetischen Zahlen gibt es Teiler, aber es gibt Verkleinerungspaare. (Zum Beispiel ist 64 4x16 und 16x4 usw.) Und diese Anzahl von Wendepunkten ist nur der Teil der Quadratwurzel. (Wenn es 64 ist, wird es bei 8x8 zurückgefaltet) Wenn Sie also zur Quadratwurzel aufblicken, müssen Sie nicht darüber hinausblicken. Wir werden dies im Programm widerspiegeln.

Die Quadratwurzel wird durch eine Methode namens sqrt im Mathematikmodul dargestellt. Um den Wert nach dem Dezimalpunkt abzuschneiden, verwenden wir dann auch eine Methode namens Floor des Mathematikmoduls.

Das folgende ist das geänderte Programm.

import math#Mathematikmodul importieren

a = input()
a = int(a)

a = math.sqrt(a)#Verwenden Sie sqrt, um die Quadratwurzel von a darzustellen
a = math.floor(a)#Schneiden Sie a nach dem Dezimalpunkt mit dem Boden ab

def p_judge(a):
    if a == 2:
        return True
    elif a <= 1 or a%2 == 0:
        return False
    for x in range(3,a+1,2):#Weil sich a geändert hat+Ich muss
        if a%x == 0:
            return False
        
    return True

print(p_judge(a))

Das ist alles! !! Vielen Dank an alle, die kommentiert haben!

abschließend

Dieses Mal habe ich ein Programm zur Beurteilung von Primzahlen erstellt. Wenn Sie Ratschläge haben, können Sie diese gerne kommentieren. Ich werde sie jedes Mal im Artikel wiedergeben.

Vielen Dank für das Lesen bis zum Ende! !! !!

Recommended Posts

Primzahlbeurteilung mit Python
Primzahlbeurteilung durch Python
Algorithmus in Python (Haupturteil)
Unit Test Log Ausgabe mit Python
FizzBuzz in Python3
Scraping mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Python-Integritätstest
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Python] Super einfacher Test mit Assert-Anweisung
Stresstest mit Locust in Python geschrieben
Testen Sie nicht funktionalisierte Python-Programme mit GitLab CI
WebUI-Test mit Python2.6 + Selenium 2.44.0 - Profileinstellung
Generieren Sie japanische Testdaten mit Python faker
Wie man einen Taschentest mit Python macht
Integration mit setuptools / python setup.py test / pytest-runder
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Mit Codetest stärken ⑦
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Erstellen Sie solche Testdaten mit Python (Teil 1)
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Mit Codetest stärken ⑨
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Scraping mit Python + PhantomJS
Python Basic 8 Numpy Test
Primzahlaufzählung und Primzahlbeurteilung in Python
Python-Testpaket-Memo
Fahren Sie WebDriver mit Python