Почему в цикле While выполняется больше итераций чем надо? - C (СИ)
Формулировка задачи:
Всем привет. Имеется задача ,
Я набросал код. Но проблема в том, что тело цикла while выполняется больше чем надо на 1. Как это можно исправить? Пробовал и do while (number!=0) но результат тот же..
С клавиатуры вводятся числа. Признак окончания ввода число 0. Определить количество чисел сумма делителей которых четное число (исключая 1 и само число).
#include <stdio.h> int main (void) { int number; /* Вводимое число. */ int i; /* Счетчик цикла */ int summa; /* Сумма делетилей */ int count; /* Количество чисел, у которых четная сумма делителей. */ summa = 0; count = 0; while(number!=0) /*Пока число не равно 0 (0-признак окончния ввода) Если я правильно понимаю, то тело цикла должно прекратится выполнятся когда число будет равно 0. */ { scanf("%d",&number); /* Вводим число. */ if (number < 0) { number = -number; /* Если введено отрицательное число, меняем ему знак. */ } /* Проверяем в цикле делители числа. */ for (i=2;i<number;i++) { if (number % i == 0) { summa = summa + i; /* Считаем сумму делителей */ } } /* Если сумма делителей четная, то увеличиваем количество чисел для которых она четна на единицу. Вот тут и вся загвостка. count считается больше чем нужно на 1. */ if (summa % 2 == 0) { count++; } } /* Выводим результат. */ printf("Summa: %d\n",summa); printf("Count: %d\n",count); return 0; }
Решение задачи: «Почему в цикле While выполняется больше итераций чем надо?»
textual
Листинг программы
if (!number) break;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д