Почему в цикле 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;