Compare commits

...

2 Commits

Author SHA1 Message Date
0ae838071b Merge remote-tracking branch 'origin/main' 2025-05-09 11:09:16 +02:00
ba4dc12e99 27.3 2025-05-09 11:08:54 +02:00

View File

@ -1,21 +1,21 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int eingabe;
int *zahlenBisN = (int *)malloc(100 * sizeof(int)); // Speicher wird dynamisch für 100 Zeichen reserviert
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
{
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)
@ -23,7 +23,17 @@ int main()
zahlenBisN[i] = i+1;
}
// Jede nicht Primzahl wird entfernt
// 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++ ) {
@ -32,7 +42,7 @@ int main()
zahlenBisN[i] = 0;
}
}
}
}*/
// Alle zahlen die noch im String vorhanden sind und nicht 0 sind werden ausgegeben
for (int i = 1; i < eingabe; ++i)
@ -42,7 +52,7 @@ int main()
printf("%10d", zahlenBisN[i]);
}
}
printf("\n");
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
free(zahlenBisN); // Speicher wird erneut freigegeben um Memory leaks zu verhindern
}