2016-11-22 1 views
0

so habe ich eine Funktion geschrieben, wenn eine Reihe prüft eine PrimzahlHinzufügen einer Nummer auf der Liste, wenn es die Bedingungen in einer anderen Funktion übergibt

def prime_checker(prime): 
    limit = int(math.sqrt(prime)) 
    x = 2 
    while x <= limit: 
     if prime % x != 0: 
      x += 1 
      if x == limit: 
       print("%d is prime" % prime) 
       return True 
     else: 
      print("%d Not a prime" % prime) 
      return False 

prime_checker(199) 

Jetzt habe ich eine Funktion erstellen möchten, die Zahlen Tests mit Methode prime_checker und füge diese Nummer an eine Liste an, wenn sie prim ist. Mein Versuch dafür ist:

def prime_counting(): 
    list_of_primes = [] 
    for x in range(10): 
     if prime_checker(x) == True: 
      list_of_primes.append(x) 
    print(list_of_primes) 

prime_counting() 

Dies funktioniert jedoch nicht. Gibt es eine Möglichkeit, das zu beheben?

+2

'prime_checker (9)', 'prime_checker (25)', 'prime_checker (49)', 'prime_checker (121)' - was sagen diese über 'limit' aus? – Ryan

+4

'prime_checker (3)' gibt 'None' zurück. Das scheint ein guter Ausgangspunkt für das Debuggen zu sein. – Kevin

+1

"Das funktioniert jedoch nicht. Gibt es eine Möglichkeit, das zu beheben?" - Es gibt fast sicher einen Weg, es zu beheben. Die Frage ist, was ist kaputt? Gibt es eine Ausnahme? Ist die Ausgabe falsch? Sind Sie sicher, dass Ihre 'prime_checker'-Funktion korrekt funktioniert? usw. – mgilson

Antwort

0

Ihr Prime Checker funktioniert in einigen Fällen nicht. Versuchen Sie,

0

Sie haben es fast richtig gemacht, gibt es nur eine Minute (logisch) Fehler in der Reihenfolge einer der Anweisung.

def prime_checker(prime): 
limit = int(math.sqrt(prime)) 
x = 2 
while x <= limit: 
    if prime % x != 0: 
     if x == limit: 
      print("%d is prime" % prime) 
      return True 
    x += 1 
    else: 
     print("%d Not a prime" % prime) 
     return False 

Dies ist die aktualisierte prime_checker-Funktion. Ich habe nur Ihren Fehler gefunden. Sonst war deine Logik absolut korrekt. :)

Verwandte Themen