#include #include int main() { int eingabe; int *zahlenBisN; do { zahlenBisN = (int *)malloc(100 * sizeof(int)); // Speicher wird dynamisch für 100 Zeichen reserviert printf("%s", "Bis wohin sollen die Primzahlen berechnet werden (Ende=0) ? "); scanf("%d", &eingabe); if(eingabe > 100) // Wenn mehr Speicher benötigt wird, dann wird mit realloc mehr speicher reserviert zahlenBisN = (int *)realloc(zahlenBisN, eingabe * sizeof(int)); // Array wird mit zahlen von 1 bis n gefüllt for (int i = 0; i < eingabe; ++i) { zahlenBisN[i] = i+1; } // Sieb des Eratosthenes for (int i = 1; i < eingabe; ++i) { if (zahlenBisN[i] != 0){ for (int j = zahlenBisN[i]; j <= eingabe; ++j) { if (zahlenBisN[j] % zahlenBisN[i] == 0) zahlenBisN[j] = 0; } } } // Ursprünglicher Primzahlgenerator /*// Jede nicht Primzahl wird entfernt for (int i = 0; i < eingabe; ++i) { for (int j = 2; j < i; j++ ) { if (zahlenBisN[i] % j == 0) { zahlenBisN[i] = 0; } } }*/ // Alle zahlen die noch im String vorhanden sind und nicht 0 sind werden ausgegeben for (int i = 1; i < eingabe; ++i) { if(zahlenBisN[i] != 0) { printf("%10d", zahlenBisN[i]); } } printf("\n"); free(zahlenBisN); // Speicher wird erneut freigegeben um Memory leaks zu verhindern }while(eingabe != 0); // Das Programm wird so oft wiederholt bis 0 eingegeben wird }