Вы оцениваете значение c
только после окончания цикла.Вы должны проверить c
на ходу и выйти из цикла, если вы обнаружите, что число является проникающим числом.
Обратите внимание, что вы выполняете целочисленное деление, поэтому вы можете найти c==i+1
, но c*i
не будет равно n
:
int pronic = 0;
for (i = 1; i <= n; i++) {
if (i * (i + 1) == n) {
printf("%d is a pronic number.\n", n);
pronic = 1;
break;
}
}
if (!pronic) {
printf("%d is not a pronic number\n", n);
}