#include #include int main() { int eingabe; int *zahlenBisN = (int *)malloc(100 * sizeof(int)); // Speicher wird dynamisch für 100 Zeichen reserviert do { 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 { free(zahlenBisN); // Der Speicher von der default reservierung wird freigegeben, damit er erneut reserviert werden kann 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; } // 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"); }while(eingabe != 0); // Das Programm wird so oft wiederholt bis 0 eingegeben wird free(zahlenBisN); // Speicher wird erneut freigegeben um Memory leaks zu verhindern }