Das Problem ist, dass Sie die Primzahl nach der Eingabe der Zahl finden müssen, oder wenn die Eingabe der Zahl prim ist, geben Sie das zurück. Es funktioniert gut. Es funktioniert einfach nicht, wenn der Eingang print(brute_prime(1000))
ist. Es gibt 1001 nicht 1009. Der vollständige Code ist dies:Suche nach einer Primzahl
def brute_prime(n):
for i in range(2, int(n**(0.5))):
if n % i == 0:
n += 1
else:
return n
Sie müssen die Schleife 'for i' immer dann neu starten, wenn Sie' n' erhöhen. – Barmar
Dies ist ein gutes Beispiel dafür, warum es sinnvoll ist, Funktionen in kleinere Funktionen aufzuteilen. Refactor dies, so dass es eine separate "is_prime" -Funktion verwendet, und damit Ihren Fehler vollständig durch Zufall beheben. –
Die 'for' -Schleife muss' range (2, int (n ** 0.5) +1) 'verwenden, da' range' nicht die Endnummer enthält und Sie die Quadratwurzel selbst testen müssen. Sonst wirst du behaupten, dass das Quadrat einer Primzahl ebenfalls Primzahl ist. – Barmar