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!
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! !!
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 ...
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!
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