Primzahlen richtig berechnen?

4 Antworten

Das l. append(i) darfst du nur machen, nachdem alle j erfolglos getestet wurden. Momentan hängst du i jedesmal an, wenn ein j kein Teiler von i ist.

Rück das else weniger ein, sodass es genau unter dem for j steht. Ein for-else wird nur dann ausgeführt, wenn die Schleife nicht mit break beendet wurde. Das ist eine der vielen praktischen Besonderheiten von Python.

ralphdieter  25.08.2022, 21:52

Übrigens reicht es, nur ungerade j zu testen.

0

Ich würde es vielleicht so machen.

import time
import math
from datetime import datetime

l = [2]

num = 100

def is_prime(i):
    for j in range(3, int(i**0.5)+1, 2):
        if i%j==0:
            return False
    return True

for i in range(3,num+1,2):
    if is_prime(i):
        l.append(i)
print(l)

Mit einer Funktion ist es übersichtlicher und man kann es auch einfacher wiederverwenden.

Woher ich das weiß:Hobby
Skohsl  26.08.2022, 06:50

Solltest aber die 1 aus der Liste rausnehmen, sonst hast du zumindest eine Zahl drin, die keine Primzahl ist.

1
Hanibal545  26.08.2022, 09:48
@Skohsl

Stimmt (・_・;). Hab ich ganz vergessen. Hab schon länger nichts mehr mit Primzahlen zu tun gehabt und ich wusste halt nur "Eine Zahl, die nur durch 1 und durch sich selber teilbar ist"

Danke für den Hinweis

0

Zunächst: schonmal etwas von Interpunktion gehört? Deine Frage ist ja kaum lesbar!

ich bedanke mich im voraus mit jeder hilfreichen Antwort

du bedankst dich mit hilfreichen Antworten? Worauf?

Es gibt verschiedenste Methoden, Primzahlen zu finden.

Bekannte sind etwa das Sieb des Eratosthenes oder das Prüfen auf Teiler bis zur Wurzel der Zahl.

Saas115 
Fragesteller
 25.08.2022, 19:15

ioch habe das teilen mit der wurzel das sieb schaue ich mir jetzt an sry

1