Другие языки программирования и технологии

Объясните, пожалуйста, что за что в этой программе отвечает подробно. язык с ++

int isSimple(int a)
{
int i;
for(i=2; i<=a/2; ++i)
{
if(a%i==0)
return 0;
}
return 1;
}

int main()
{
int a=0, i;
printf("Enter a: ");
scanf("%d", &a);
for(i=1; i<=a/2; ++i)
{
if(a%i==0&&isSimple(i))
printf("%d\n", i);
}
return 0;
}
Я прошу прощения, но от этой программы у меня сейчас кровь хлынет из глаз. Я, конечно, понял, что же она делает, но легче мне не стало... На ввод поступает любое число (его еще зачем-то обнуляют в начале...), затем ищется делитель введенного числа и, если найденный делитель является простым числом, то его выводят на экран. Все просто.
Константин Низамиев
Константин Низамиев
2 379
Лучший ответ
Роман Волков Автор молодец. Ему написали примерно то-же самое но конечно ответ г*вно, а не программа.
А что тут объяснять? Банальный говнокод, ищущий простые делители вводимого числа. Разбираться в этом убожестве не имеет смысла.

При поиске простого числа перебирать делители до a/2 - бессмысленная трата времени и машинных ресурсов. Проверять надо только до sqrt(a).

P.S. И, да: это чистейший С, не имеющий никакого отношения к С++.
MS
Mihail Shepel
85 210
Это чистый С. Ни одного элемента C++ тут не используется.
Vlad Bar
Vlad Bar
54 761
Это C скорее, а не С++. И он ответил за всё. В "Вашей" программе =)
К слову плохой способ искать простые числа. Программу лучше переписать. Не сдадите Вы её в таком виде. Любой препод "докопается" сразу - зачем проверять четные, зачем вложенные (по факту) циклы. И они реально не нужны. А Вы (судя по программе) скорее всего не ответите.

Подробно:

целое этоПросто (целое а)
целое и
в цикле целое и=2 и пока цикл <=а пополам увеличивать и на 1
если целое а поделилось на и без остатка возвращаем 0
если цикл прошел и мы сюда попали - возвращаем 1

целое основа
целое а = 0
выводим Enter a:
считываем число в а
зачем-то крутим цикл аналогичный в этоПросто (а), но почему-то с
и если число поделилось без остатка (см. функцию этоПросто) и ещё раз - тогда выводим число
конец
Роман Волков
Роман Волков
84 764

Похожие вопросы