Compare commits
2 Commits
b823c0674f
...
0ae838071b
Author | SHA1 | Date | |
---|---|---|---|
0ae838071b | |||
ba4dc12e99 |
26
primza.c
26
primza.c
@ -1,21 +1,21 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
int eingabe;
|
int eingabe;
|
||||||
int *zahlenBisN = (int *)malloc(100 * sizeof(int)); // Speicher wird dynamisch für 100 Zeichen reserviert
|
int *zahlenBisN;
|
||||||
|
|
||||||
do
|
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) ? ");
|
printf("%s", "Bis wohin sollen die Primzahlen berechnet werden (Ende=0) ? ");
|
||||||
scanf("%d", &eingabe);
|
scanf("%d", &eingabe);
|
||||||
|
|
||||||
if(eingabe > 100) // Wenn mehr Speicher benötigt wird, dann wird mit realloc mehr speicher reserviert
|
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));
|
zahlenBisN = (int *)realloc(zahlenBisN, eingabe * sizeof(int));
|
||||||
}
|
|
||||||
|
|
||||||
// Array wird mit zahlen von 1 bis n gefüllt
|
// Array wird mit zahlen von 1 bis n gefüllt
|
||||||
for (int i = 0; i < eingabe; ++i)
|
for (int i = 0; i < eingabe; ++i)
|
||||||
@ -23,7 +23,17 @@ int main()
|
|||||||
zahlenBisN[i] = i+1;
|
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 i = 0; i < eingabe; ++i)
|
||||||
{
|
{
|
||||||
for (int j = 2; j < i; j++ ) {
|
for (int j = 2; j < i; j++ ) {
|
||||||
@ -32,7 +42,7 @@ int main()
|
|||||||
zahlenBisN[i] = 0;
|
zahlenBisN[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Alle zahlen die noch im String vorhanden sind und nicht 0 sind werden ausgegeben
|
// Alle zahlen die noch im String vorhanden sind und nicht 0 sind werden ausgegeben
|
||||||
for (int i = 1; i < eingabe; ++i)
|
for (int i = 1; i < eingabe; ++i)
|
||||||
@ -42,7 +52,7 @@ int main()
|
|||||||
printf("%10d", zahlenBisN[i]);
|
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
|
}while(eingabe != 0); // Das Programm wird so oft wiederholt bis 0 eingegeben wird
|
||||||
free(zahlenBisN); // Speicher wird erneut freigegeben um Memory leaks zu verhindern
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user