Programmieren Sieb Eratosthenes Primzahlen
Verfasst: Samstag 13. Januar 2018, 13:43
Guten Tag ,
dies ist mein erster Beitrag hier. Ich studiere Physik im ersten Semester und komme mit dieser Aufgabe nicht klar. Könnt ihr mir bitte helfen.
Das ist der Ansatz mit dem wir arbeiten sollen bzw. das Sieb des Eratosthenes:
1 import sys
2 print ("Primzahlen bis n_max=",file=sys.stderr,end=")
3nmax=int(input())
6 n=0
7 for s in range (2,nmax+1):
8 -----if p [s] :
9 ---------n+= 1
10 --------print (s,n)
11---------for m in range (2*s,nmax+1,s):
12-------------p [m] = False
Aufgabe :
Implementieren Sie das Sieb des Eratosthenes in einem Skript
sieb.py, indem Sie die Liste über ein Feld p[] mit n_max+1
booleschen Elementen realisieren
. Alle Werte sind zunächst True,
d.h. p[k] = True bedeutet, dass sich k noch in der Liste bendet.
Dementsprechend erfolgt das Streichen von k aus der Liste durch
das Setzen von p[k] auf False.
Die Obergrenze nmax soll beim Programmstart eingegeben werden
können. Ausgegeben werden soll jede gefundene Primzahl.
Tipp: Nutzen Sie für das Streichen der Vielfachen von n die
angebbare Schrittweite bei range()
Erweiterung: Zählen Sie die gefundenen Primzahlen und geben
jeweils die Primzahl sowie ihre Nummer aus (⇒ 2-spaltige Tabelle),
sodass sie das Ergebnis plotten können
Danke im Vorraus
dies ist mein erster Beitrag hier. Ich studiere Physik im ersten Semester und komme mit dieser Aufgabe nicht klar. Könnt ihr mir bitte helfen.
Das ist der Ansatz mit dem wir arbeiten sollen bzw. das Sieb des Eratosthenes:
1 import sys
2 print ("Primzahlen bis n_max=",file=sys.stderr,end=")
3nmax=int(input())
6 n=0
7 for s in range (2,nmax+1):
8 -----if p [s] :
9 ---------n+= 1
10 --------print (s,n)
11---------for m in range (2*s,nmax+1,s):
12-------------p [m] = False
Aufgabe :
Implementieren Sie das Sieb des Eratosthenes in einem Skript
sieb.py, indem Sie die Liste über ein Feld p[] mit n_max+1
booleschen Elementen realisieren
. Alle Werte sind zunächst True,
d.h. p[k] = True bedeutet, dass sich k noch in der Liste bendet.
Dementsprechend erfolgt das Streichen von k aus der Liste durch
das Setzen von p[k] auf False.
Die Obergrenze nmax soll beim Programmstart eingegeben werden
können. Ausgegeben werden soll jede gefundene Primzahl.
Tipp: Nutzen Sie für das Streichen der Vielfachen von n die
angebbare Schrittweite bei range()
Erweiterung: Zählen Sie die gefundenen Primzahlen und geben
jeweils die Primzahl sowie ihre Nummer aus (⇒ 2-spaltige Tabelle),
sodass sie das Ergebnis plotten können
Danke im Vorraus