Primzahlenbeispiel

::emanuel::

Erfahrenes Mitglied
hallo! bitte helft mir, ist total dringend!

erstellen sie ein programm, wo der benutzer die möglichkeit hat, für ein bestimmtes n (0<n<=100) alle primzahlen, die kleiner als n sind auszugeben.
(wiederholung mit wollen sie nocheinmal? muss gegeben sein.

die primzahl soll mit dem folgendem algorithmus berechnet werden.

sieb des eratostenes:
in einem array sind alle ganzen zahlen von 2 bis n enthalten. man durchläuft dieses array von 2 beginnend und streicht alle zahlen die ein vielfaches von 2 darstellen. nun betrachtet man die nächste zahl im array. ist sie bereits gestrichen, handelt es sich um ein vielfaches einer anderen (prim-) zahl, ist sie nicht gestrichen, ist die zahl prim und es werden wiederum alle vielfachen davon gestrichen. am ende bleiben alle primzahlen kleiner gleich n übrig.

bitte helft mir!
 
Erwartest du etwa von uns das wir deine Hausaufgaben erledigen? Sowas wird hier gar nicht gerne gesehen!


Am besten realisierst du den algoritmus mit einem char[], das du dynamisch allozierst..

char* zahlen = (char*)malloc((n/8)+1);
memset(zahlen, 0xFF, (n/8)+1);

das /8 ergibt sich daraus das jedes bit in dem char[] benutzt werden kann wodurch man nur ein achtel des speichers braucht. das memset setzt alle bit in dem char[]. die falschen bits kannst du dann einfach heraus OR-en und fertig.

nun kannst du mit einer verschtelten for schleife problemlos die bits prüfen, ändern und so weiter.

und zwar so:

setzen:
zahlen[n/8] |= 1 << (n%8);

löschen:
zahlen[n/8] &= ~(1<<(n%8));

testen:
(zahlen[n/8] & (1<<(n%8)))
 
Trotzdem danke für die Hilfe!
Es tut mir wirklich Leid, dass ich die Netiquette missachtet habe.
Ihr könnt diesen Thread löschen.

Lieben Gruß,

Emanuel
 
Zurück