"sieb des eratosthenes" - finde meinen fehler nicht
Gex 20.12.2005 - 14:47 2440 17
vandroiy
Bloody Newbie
|
von mir aus auch if-anweisung oder sonstwas. tut hier aber jetzt relativ wenig zur sache  Weil sie`s so gelernt bekommen. Ich höre das immer wieder...
|
smashIt
master of disaster
|
mich wunderts nciht das viele if als schleife bezeichnen sieht ja vom code her fast genauso aus allso if(bla){nochmehr bla;} im vergleich zu for(bla;bla;bla){schonwieder bla;}
|
Neo-=IuE=-
Here to stay
|
najo, stimmt schon, ist vielleicht etwas unschön. aber das hier: CODE ändert am ergebnis auch nix... oja der unterschied ist, dass du deine zählvariable nicht verwendest im ursprünglichen Programm hättest eigentlich bei calc = i*j einfach calc = (i+1)*j schreiben können, und bei dem array zugriff calc-1 statt calc weiters musst beim ausgeben k+1 statt k ausgeben und problem gelöst und die abbruchbedingung vor dem zugriff auf das array und böse überraschung bleiben einem erspart  hier der code von dir nur verändert so, dass er geht #include<stdlib.h>
#include<stdio.h>
int size,calc;
int main(void)
{
printf("Ich moechte die Primzahlen bis zu diesem Wert berechnen:\n");
scanf("%d",&size);
// Bool'sches Array wird definiert
bool prim[size];
// Alle Elemente des Arrays werden auf "true" gesetzt
for (int i=0; i < size; i++)
{
prim[i] = true;
}
// Das erste Element wird auf "false" geÀndert
prim[0] = false;
// Sieben
for (int i=1; i < size; i++)
{
if (prim[i] == true)
{
for (int j = 2; j < size; j++)
{
calc = (i+1)*j;
if (calc > size)
break;
prim[calc-1] = false;
}
}
}
// Ausgabe
for (int k=0; k < size; k++)
{
if (prim[k] == true)
{
printf("%d \n",k+1);
}
}
return 0;
}
Bearbeitet von Neo-=IuE=- am 24.12.2005, 11:33
|