А что с кодом не так? Он работает и возвращает правильный результат.
Как работает?
Код:
for (i = 1; i <= Y; i++)
{
s = i;
M = i;
for (j = 1; j <= i-1; j++)
{
s = SumDigits(s);
M += s;
При i = 1 условие во втором цикле не выполняется, и соответственно вход в него не происходит. То есть, реально начинает считать с i = 2, не знаю, так ли было задумано автором кода.
При каждом введённом Y программа выдаёт единственный результат да-нет: либо выполнилось условие if (M == Y), либо нет. Оно выполняется только один раз, дальше можно не считать, выходить из обеих циклов. Что-бы получить линейку результатов, нужен либо ещё один цикл, либо вручную вводить Y, например, от 1 до 100 - и вручную записывать результат на бумажке. А так да, вроде работает, но я бы не понял, что оно работает, если бы г-н
Dmitriy40 не выложил таблицу с готовыми результатами.
Не понятен смысл вывода на экран переменной i.