У меня есть следующая программа, отличные номера не печатаются, только вывод - это цифры 1 и 2, которые не идеальны. Что случилось, это проблема с областью или это петли? Добавление заявления перерыва после оператора печати вызывает вывод всех чисел 1 - 99.Идеальные числа в C, не печатаются
int sum = 0;
for (int i = 1; i < 100; i++) {
for (int j = 1; j <= i; j++) {
if (i % j == 0){
sum += j;}
if (sum == i){
printf("%d\n", i);
}
}
}
Ну, ни 1, ни 2 не являются идеальными числами. Поэтому я начну с этого. Вы должны посмотреть [this] (http://stackoverflow.com/questions/26753839/efficiently-getting-all-divisors-of-a-given-number) и работать оттуда. – CoffeeandCode
Сумма должна начинаться с нуля при каждой итерации внутреннего цикла. – o11c
Обратите внимание, что есть только два идеальных числа ниже 100 (они не 1 и 2, это связано с ошибкой в вашем состоянии цикла), и только пять ниже 100 миллионов, поэтому вы не найдете их много в ближайшее время с этим методом, надеюсь, это всего лишь упражнение. =) – Arkku