Найти натуральное число N, сумма цифр которого равна К, а сумма цифр N*N равна К*К - C (СИ)
Формулировка задачи:
Найти натуральное число N, сумма цифр которого равна К, а сумма цифр N*N равна К*К.
Помогите,прошу!!!
Решение задачи: «Найти натуральное число N, сумма цифр которого равна К, а сумма цифр N*N равна К*К»
textual
Листинг программы
for(n=1; n<size; n++) {
ntmp = n;
for(k=0; ntmp; ntmp /= 10) k+= ntmp%10;
ntmp = n*n;
for(z=0; ntmp; ntmp /= 10) z+= ntmp%10;
if (z == k*k) printf("n=%d\n", n);
}
Объяснение кода листинга программы
В данном коде ищется натуральное число N, сумма цифр которого равна К, а сумма цифр NN равна КК.
- Переменная
nинициализируется значением 1. - Цикл
forначинается с переменнойnи условиемn < size. - В каждой итерации цикла значение переменной
nувеличивается на 1. - Внутри цикла создается временная переменная
ntmp, которая инициализируется значениемn. - Внутренний цикл
forначинается с переменнойkи условиемntmp. - В каждой итерации внутреннего цикла значение переменной
kувеличивается на значение последней цифры числаntmp. - Значение переменной
ntmpделится на 10. - Значение переменной
ntmpумножается на себя. - Внутренний цикл
forначинается с переменнойzи условиемntmp. - В каждой итерации внутреннего цикла значение переменной
zувеличивается на значение последней цифры числаntmp. - Значение переменной
ntmpделится на 10. - Если значение переменной
zравно квадрату значения переменнойk, то выводится значение переменнойn. Примечание: Код не проверялся на ошибки и не был оптимизирован.