/ / Python Primes-Funktion gibt falsche Ausgabe - Python, Primzahlen

Python-Primes funktionieren mit falscher Ausgabe - Python, Primes

Ich wurde gebeten, zwei Funktionen zu erstellen, die erste is_divisible (n, Primzahlen), um zu überprüfen, ob eine Zahl durch irgendwelche anderen Zahlen in der Primzahl teilbar ist

und dann die zweite, die die erste verwenden würde, um alle Primzahlen in einem bestimmten Bereich zu finden.

Ich weiß nicht warum, aber ich kann nicht herausfinden, wie man die Primzahlen zum Vorschein bringt. Was ist offensichtlich daran, was ich falsch mache?

def is_divisible(n, primes):
for p in primes:
if n % p == 0:
return True
else:
return False

def find_primes(N):
primes=[]
for n in range(2, N+1):
is_divisible(n,primes)
if False:
primes.append(n)
print(primes)

find_primes(20)

Antworten:

1 für die Antwort № 1
def is_divisible(n, primes):
for p in primes:
if n % p == 0:
return True
return False  # Only return False if no matches

def find_primes(N):
primes=[]
for n in range(2, N+1):
if not is_divisible(n,primes)
primes.append(n)
print(primes)

print find_primes(20)

0 für die Antwort № 2

Diese if-Anweisung wird niemals wahr sein:

   if False:
primes.append(n)

Schreiben Sie den Code wie folgt neu:

  if is_divisible(n,primes)==False:
primes.append(n)

0 für die Antwort № 3

Dieser Code ist falsch:

    is_divisible(n,primes)
if False:
primes.append(n)

Sie sollten prüfen, ob die Teilbarkeit innerhalb der if-Bedingung liegt. Versuche dies:

    if not is_divisible(n,primes):
primes.append(n)

Python wertet 0 bis Falsch und ansonsten alle Zahlen aus. Es ist also nicht notwendig, etwas wie "if condition == True" zu tun. Verwenden Sie nur wenn Bedingung.