Есть программа на Си, которая ищет и выводит на экран первые сто простых чисел. Объясните как она работает, пожалуйста ( т. е прокомментируйте строчки или опишите что и зачем в ней используется). #include int main() { int a = -1, i, d, max=0; for (i = 2; max < 100; i++) { if (i == 1) a = 0; for (d=2; d*d <= i; d++) { if (i%d == 0) { a = 0; break; } } if (a < 0) a = 1; if (a) { max++; printf("%3d - %d\n", max, i); } a = -1; } system ("pause"); return 0; } Заранее спасибо
Код плохо написан, есть лишние строки. Я переделал в более понятный вид. Кто знает Си, тот разберётся. Кто не знает, тому и не надо.
int main(void) { int max = 0; for (int i = 2; max < 100; i++) { int a = 1; for (int d = 2; d*d <= i; d++) { if (i%d == 0) { a = 0; break; } } if (a) { max++; printf("%3d - %d\n", max, i); } } return 0; }
У меня она вообще никак не работает, а почему - спрашивай у того, кто её писáл! У Робота зато, почему-то, всё прекрасно работает, а кто будет говорить, что-де, мол, "алгоритм неоптимальный да неэффективный" - пусть тоже лесом идёт, потому что для первых ста простых чисел - всё нормально и эффективно!..
#include
int main()
{
int a = -1, i, d, max=0;
for (i = 2; max < 100; i++)
{
if (i == 1)
a = 0;
for (d=2; d*d <= i; d++)
{
if (i%d == 0)
{
a = 0;
break;
}
}
if (a < 0)
a = 1;
if (a)
{
max++;
printf("%3d - %d\n", max, i);
}
a = -1;
}
system ("pause");
return 0;
}
Заранее спасибо