Программа, которая проверяет идеальные числа - что-то не так
Я должен написать функцию, которая получает число и печатает все совершенные числа, которые меньше заданного числа. Если их нет, функция печатает соответствующее сообщение. Программа, которую я только что написал, хорошо скомпилирована, но работает только частично. Например, если введенное число равно 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++)