No tak najprv som hadal ze v ktorom cykle, ale potom som pochopil ze asi v tom druhom...
ale mal si pravdu, bolo to zle napisane (lebo som to pisal narychlo)
je to spravne s tou odmocninou, teda takto :
Kód:
#define N 102
int main()
{
int i, j, a[N];
for (i = 2; i < N; i ++) a[i] = 1;
for (i = 2; i < (int)sqrt(N); i ++)
for (j = i; i*j < N; j ++) a[i*j] = 0;
for (i = 2; i < N; i ++)
if (a[i]) printf("%4d", i);
printf("\n");
getch();
return 0;
}
ale tak isto to funguje s (N/2) (a je to predsalen este kusok rychlejsie, pretoze div je strojova instrukcia

) takto :
Kód:
#define N 102
int main()
{
int i, j, a[N];
for (i = 2; i < N; i ++) a[i] = 1;
for (i = 2; i < (N/2); i ++)
for (j = i; i*j < N; j ++) a[i*j] = 0;
for (i = 2; i < N; i ++)
if (a[i]) printf("%4d", i);
printf("\n");
getch();
return 0;
}
Ale este trebalo upresnit, ze program vypise vsetky prvocisla N-1...
Ale nakoniec o rychlost sa tu ani tak nejedna, kedze je to zakladny program najma na pochopenie algoritmu...a to myslim bolo hlavnym cielom...
P.S.: Samozrejme ze s tou rychlostou by sa dalo este pohrat, s nejakymi direktivami compilera...