Программа, которая проверяет идеальные числа - что-то не так

Я должен написать функцию, которая получает число и печатает все совершенные числа, которые меньше заданного числа. Если их нет, функция печатает соответствующее сообщение. Программа, которую я только что написал, хорошо скомпилирована, но работает только частично. Например, если введенное число равно 5, по какой-то причине я не получаю сообщения о том, что в этом диапазоне нет идеальных чисел (= до 5) .

Может кто-нибудь объяснить мне, что не так в этой программе? Буду признателен за любую помощь!

#include<iostream>

using namespace std;
void check (int num, int & j);
void main()
{

 int num,j, count;

 cout << "List all the perfect numbers less than: ";
 cin >> num;

 check (num, j);
}


 void check (int num, int & j)
 {
     int i,sum, count=0;
 for(j=2;j<num;num++)
 {
     sum=0;
   for(i=1;i<j;i++)
   { 
      if(j%i == 0)
      sum += i; 
   }

    if(sum == j)
    {cout << j <<endl; 
    count+=1;
    }
 }   

 if (count==0)
     cout<<"there are no perfect numbers"<<endl;
 }

1 ответ

В вашем коде есть бесконечный цикл:

for(j=2;j<num;num++)

Я думаю, что это должно быть

for(j=2;j<num;j++)
Другие вопросы по тегам