_
Danke nochmal für Eure Tips!
Damit auch andere was von diesem Thread haben, hier meine Endfassung, die ich mit Eurer Hilfe nun erarbeitet habe:
Grüße
Micha
//Aufgabe:
//Bestimmen Sie Primzahlen zwischen 1 und max = 100
//mit dem Sieb des Erathostenes. Hinter diesem Algorithmus
//steckt das Prinzip, anfangs alle natürlichen Zahlen
//größer eins zu den Primzahlen zu zählen; im Verlauf
//des Algorithmus werden die irrtümlich angenommenen
//(Nicht-)Primzahlen dann heraus gesiebt.
//
//Schreiben Sie in der Datei gr1.c ein Programm, in dem Sie das folgende Strukturprogramm umsetzen:
//- Feld mit max = 100 Elementen deklarieren
//- Elemente 2 bis max des Feldes mit 1 initialisieren
//- für z = 2 bis z < max
// - Feld[z] = 1 ? JA oder NEIN
//
// - Wenn JA:
// - Ausgabe der Primzahl z
// - für i = alle Vielfachen (<max) von z
// - Feld[i] = 0
#include <stdio.h>
#include <stdlib.h>
int main()
{
// Variablen-Deklaration:
int Feld[100];
int max, i, x, y, z;
// Wertezuweisung max und initialisieren von y:
max = 100;
y = 0;
// 1 keine Primzahl
Feld[0] = 0;
// Werte der Felder 2 bis max initialisieren:
for(z = 2; z <= max; z++)
{
Feld[z-1] = 1; // Setzt alle Zahlen ausser "1" auf den Wert 1, da alles außer 1 erstmal MÖGLICHE Primzahl ist.
}
// Primzahlen herausfinden:
for(z = 2; z <= max; z++) // 1 keine Primzahl, daher Start bei z=2
{
if(Feld[z-1] == 1) //Prüft nur die Zahlen, die als MÖGLICHE Primzahlen gelten
{
for(i = 2; i < max; i++) // Schleife erreichnet die Vielfachen der möglichen Primzahl, da diese nicht Primzahl sind
{
y = z * i;
if (y <= max) Feld[y-1]=0; // Alle Vielfachen der Primzahl bis 100 werden auf 0 = Nicht-Primzahl gesetzt.
}
}
}
// Primzahlen ausgeben:
printf("Primzahlen von 1 bis 100 sind:\n");
for(z=1; z<=100; z++)
{
if (Feld[z] == 1) printf("%i ",z+1); // Ausgabe aller Primzahlen
}
printf("\n"); //sorgt nur für Zeilenumbruch nach der Ausgabe
system("pause"); // Systempause nach Ausgabe
return (0);
}