Dieses Programm erstellt eine Liste aller Primzahlen kleiner oder gleich einem bestimmten Eingang.Primzahl-Finder einschließlich 2 mehrfache
Dann druckt es die Liste.
Ich kann nicht verstehen, warum es die Nummer 2 enthält Als ich das Programm, initialisiert ich die Liste mit Primzahlen = [2], weil ich dachte, da 2% 2 == 0,
if n % x == 0:
is_prime = False
wird is_prime
zu False
gesetzt. Dies scheint jedoch nicht der Fall zu sein.
Ich bin mir sicher, dass etwas mit der Logik von meinem range()
in den for
Schleifen, die ich gerade nicht verstehe, los ist.
Ich denke, meine Frage ist: Warum ist jedes Mal 2 in der Liste der Primzahlen enthalten?
import math
limit = int(input("Enter a positive integer greater than 1: "))
while limit < 2:
limit = int(input("Error. Please enter a positive integer greater than 1: "))
primes = []
#Check all numbers n <= limit for primeness
for n in range (2, limit + 1):
square_root = int(math.sqrt(n))
is_prime = True
for x in range(2, (square_root + 1)):
if n % x == 0:
is_prime = False
if is_prime:
primes.append(n)
#print all the primes
print("The primes less than or equal to", limit, "are:")
for num in primes:
print(num)
Sie können diesen Code erheblich beschleunigen, indem Sie 'break' nach' is_prime = False' hinzufügen. Betrachten Sie die Zahl 10.000. Sie würden 10000% 2 überprüfen, würde dann is_prime = false setzen, dann würden Sie 10000% 3, 10000% 4 usw. überprüfen, obwohl Sie wissen, dass es nicht Prime ist – Keatinge
2 selbst ist ein Prime, was ist los damit? – armnotstrong