Помогите разобраться в коде на Си
Программа для поиска автоморфных чисел среди первых 25 чисел. Что делает в программе цикл while?
#include <stdio.h>
//1, 5, 6, 25,
int main()
{ int res;
long int no;
for (int i = 1; i <= 25; i++) {
no = i;
long int square = no * no;
res = 1;
while (no > 0 && square > 0) {
if (no % 10 != square % 10) {
res = 0;
}
no = no / 10;
square = square / 10;
}
if (res == 1) {
printf("%d ", i);
}
}
return 0;
}
И почему если его убрать, то в консоли выведутся числа:1, 5, 6, 10, 11, 15 , 16, 20, 21, 25, хотя эти числа и так подходили под условие if на 13 строчке при существующем цикле while
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Цикл позволяет перебрать все цифры числа no (кстати, && square > 0 в условии можно убрать), а не только последнюю.
Вот у вас выводится, например, 15, хотя это не автоморфное число - совпадения одной последней цифры недостаточно.
А 25 - автоморфное, т.к. в цикле проверяется, то последняя цифра квадрата 5, и предпоследняя 2