2016-09-19 6 views
0

Ich weiß, dass diese Frage viel zu oft gestellt wurde, aber ich bin nicht auf der Suche nach dem schnellsten Algorithmus. Ich möchte nur wissen, was ich mit meinem Code falsch mache, da er fehlerhaft ist.Python - überprüfen, ob es Primzahl ist

import math 

def is_prime(number): 
    for i in range (2, 1+ int(math.sqrt(number))): 
     if number % i == 0: 
      return 0 
     else: 
      return 1 

choice = int(input("Check if it's prime: ")) 
if is_prime(choice): 
    print ("{} is a prime number".format(choice)) 
else: 
    print ("{} is not a prime number".format(choice)) 

Wenn ich dieses Programm testen für die meisten Zahlen wird es richtige Antwort zurück, aber wenn ich eine Quadratzahl überprüfen wird es sagen, dass es ein gutes ist. Also irgendwelche Vorschläge, was ich falsch mache?

+0

Ach ja, und ich weiß, ich habe nur den glücklichen Weg, wo ich nicht einmal Eingabe des Benutzers überprüfen haben, aber lasst uns Überspringe das vorerst und gehe davon aus, dass ich immer 'integer> = 2' gebe – narn

Antwort

4

Sie kehren sofort in der ersten Iteration der Schleife ... immer zurück.

Statt nur sofort zurück, wenn Sie wissen, dass es keine Primzahl ist, sonst gehen halten:

def is_prime(number): 
    for i in range (2, 1+ int(math.sqrt(number))): 
     if number % i == 0: 
      return 0 
    return 1 
+0

Oh, jetzt sehe ich es. Danke für Ihre Zeit – narn

+0

Gern geschehen. – trincot

Verwandte Themen