0 Daumen
1,1k Aufrufe

Primzahlensieg
alle Zahlen von 1 bis n
nicht gestricchen Vielfachen von 2,3,... , Wurzel(n)

Das Programm soll nach Eingabe von n auf einem Vektor der Zahlen von 1 bis n die Siebmethode anwenden. Die Ausgabe der Primzahlen soll rechtsbündig und mit einheitlich vielen Stellen erfolgen sowie 10 Spalten pro Zeile umfassen

Keine Divisionen, sondern nur Multiplikationen


Wie muss ich vorgehen, damit das Programm durch eine Siebmethode die Primzahlen herausfindet?


Ansatz;

#include <iostream>


int zahlenfeld[n], i, z , p;


zahlenfeld[0] = 0;


for (z=2, z< max, z++)
{

for(i=2 , i<max, i++)
{
p=z*i;


return 0;


Avatar von

1 Antwort

+1 Daumen

Den Algorithmus gibt es hier: http://www.primzahlen.de/primzahltests/sieb_des_eratosthenes.htm

Diesen bildest Du 1 zu 1 ab.

Für die einheitliche Stellenanzahl (führende Nulöen?) empfehle ich eine eigene Funktion.

Avatar von

Ich weiß ja, dass die Vielfachen von den Primzahlen (2,3,5,7..., 11 ) als Primzahlen wegfallen und der Rest als Primzahlen übrig bleiben...


Kannst du mir aber bitte helfen , wie ich das jetzt einprogrammiere?


Habe ja schon o ausgeschlossen durch zahlenfeld[0]= 0 , dann habe ich 2 Schleifen (z und i laufen), dessen Werte sich multiplizieren, wodurch ich die Vielfachen der Primzahlen raus bekomme.

Tipp:

for(int i = 0; i < n; i++){
a = i * k;
// mit a fortfahren
}

if(a<n) [a-1] = 0


Damit sollen alle Vielfachen auf null gesetzt werden, da diese schonmal wegfallen..

Ist das so richtig und wie muss ich dann weiter machen?

????????????

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community