Hey ich habe folgende Fragestellung und wäre über Hilfe sehr dankbar:) :
Schreiben Sie einen Code, der für eine gegebene Zahl n alle Primzahlen, die kleiner gleich n sind, bestimmt und in einem Vektor zusammenfasst.
Verwenden Sie daür den Sieb-Algorithmus von Eratosthenes, der wie folgt funktioniert:
1. Starten Sie mit einem Vektor, der die Zahlen von 2 bis n enthält und das aktuelle Sieb darstellt.
2. Iterieren Sie durch die Werte von 2 bis n:
• Überprüfen Sie, ob die Zahl im aktuellen Sieb enthalten ist.
• Ist die Zahl im aktuellen Sieb enthalten, dann entfernen Sie alle Vielfachen, aber nicht die Zahl selbst, aus dem aktuellen Sieb und erstellen Sie damit ein neues Sieb.
3. Diejenigen Zahlen, die am Ende im Sieb enthalten sind, stellen die Primzahlen dar.
Bestimmen Sie die Primzahlen und deren Anzahl für n = 300.
Danke im Voraus für jegliche Hilfe!
Sieb-Algorithmus von Eratosthenes
Re: Sieb-Algorithmus von Eratosthenes
Hallo TopProtet,
die beste Hilfe, die ich Dir derzeit geben kann ist der Link auf diesen Thread: viewtopic.php?f=20&t=35
Die Kombination der Befehle for und seq kann dabei sehr hilfreich sein.
LG,
Bernhard
die beste Hilfe, die ich Dir derzeit geben kann ist der Link auf diesen Thread: viewtopic.php?f=20&t=35
Für Deine Aufgabe ist es sehr hilfreich, die Funktion seq zu kennen. Sie erzeugt beispielsweise Vektoren von 1 bis 5 oder von 20 bis 25. Probier mal folgendes aus:
Code: Alles auswählen
seq(from = 1, to = 5, by = 1)
seq(from = 20, to = 25, by = 1)
2. Iterieren Sie durch die Werte von 2 bis n:
Die Kombination der Befehle for und seq kann dabei sehr hilfreich sein.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Sieb-Algorithmus von Eratosthenes
Hallo TopProtet,
willkommen im Forum!
Gruß, Jörg
willkommen im Forum!
vor etwa einem Jahr habe ich sowas programmiert. Damals ging es aber um das Finden von Primzahlzwillingen.TopProtet hat geschrieben: ↑So Apr 18, 2021 12:44 pm Hey ich habe folgende Fragestellung und wäre über Hilfe sehr dankbar:) :
Schreiben Sie einen Code, der für eine gegebene Zahl n alle Primzahlen, die kleiner gleich n sind, bestimmt und in einem Vektor zusammenfasst.
Verwenden Sie daür den Sieb-Algorithmus von Eratosthenes
Das habe ich bei meinem Programm etwas anders angelegt. Vielleicht kannst Du es ja trotzdem als Anregung nutzen:... , der wie folgt funktioniert:
1. Starten Sie mit einem Vektor, der die Zahlen von 2 bis n enthält und das aktuelle Sieb darstellt.
Code: Alles auswählen
n <- 500
x <- logical(n)
x[-1] <- TRUE # 1 ist keine Primzahl
for (i in 2:sqrt(n)) {
if (x[i]) x[seq(i+i, n, by=i)] <- FALSE
}
p <- which(x)
p
diff(p) == 2
p[which(diff(p) == 2)]