Python, Sieb des Eratosthenes?

4 Antworten

Ich glaube, was du suchst ist folgendes

Liste = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
Primzahlen = [1,2,5,8]
Liste[1] = 0
Liste[0] = 0

for z in Liste:
    for y in Primzahlen:
        if z == y:
            print(z);

Aber das ist natürlich nicht die beste Möglichkeit, das ganze zu machen. Ich schick gleich eine bessere rein.

Anzahl=raw_input("Anzahl: ")

for n in range(2, 10):

for x in range(2, n):

if n % x == 0: #modulo -> 8 % 3 = REST: 2 (2/3)

break

else:

print n, 'ist eine Primzahl'

Versuch mal das!

(Muss richtig formatiert werden)

ShiroTwT 
Fragesteller
 03.06.2019, 21:28

Was genau passiert in den Schritten?

0
ShiroTwT 
Fragesteller
 03.06.2019, 21:30

nach der ersten schleife muss doch ein output gegeben werden?

0
ShiroTwT 
Fragesteller
 03.06.2019, 21:36
@MusicFlower2k

Danke,leider geht es nicht um Python weder noch um das Sieb

0

Folgender Code ergibt alle Primzahlen bis zu einer bestimmten Zahl mit Hilfe des Sieb des Erastothenes:

biggestNumber = 20;

numbers = []

for i in range(0,biggestNumber):
    numbers.append(True)

for i in range(2,len(numbers)-1):
    for j in range(i+1,len(numbers)-1):
        if ((j % i) == 0): numbers[j] = False
            
for i in range(2, len(numbers)-1):
    if (numbers[i]): print(i)

Bitte Code in Zukunft als Text posten, nicht als Bild. Um es zu testen, müsste ich es jetzt abtippen!

Dein erster Fehler ist, dass die Primzahlen nicht stimmen. 1 und 8 sind keine Primzahlen, dafür fehlt aber 3 und 7.

Abgesehen davon ist die Methode natürlich falsch. Du willst die Primzahlen herausfinden, also solltest du sie nicht zu Beginn in einer Liste eingeben.

Schau dir am besten nochmal das Sieb des Eratosthenes an; es sieht nicht so aus, als ob du es verstanden hättest.

Wenn du nicht weiterkommst, schau dir den Pseudocode auf Wikipedia an; den musst du nur noch in Python übersetzen.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium
ShiroTwT 
Fragesteller
 03.06.2019, 21:41

Das mit den Primzahlen hab ich bereits rausgenommen, ich weiß nur nicht wie man das ganze in Python übersetzt, kommt nichts raus

0
VeryBestAnswers  03.06.2019, 22:01
@ShiroTwT

Hier eine kleine Anregung: Du brauchst eine Liste, in der du speicherst, ob eine Zahl prim ist oder nicht. Am besten funktioniert das mit mit bool (True heißt Primzahl, False heißt keine Primzahl).

Die Liste erstellst du so:

liste = [True] * 20

Da Listen in Python bei 0 beginnen, wir aber bei 1 anfangen zu zählen, sind ein paar Hilfsfunktionen nützlich:

def ist_prim(n):
    return liste[n - 1]

def setze_nicht_prim(n):
    liste[n - 1] = False

Dann solltest du bedenken, dass die 1 keine Primzahl ist:

setze_nicht_prim(1)

Um über über alle Zahlen von 2 bis 20 zu iterieren, schreibe:

for n in range(2, 21):

Das heißt, 2 ≤ n < 21

1