我必须编写一个获取数字的函数,并打印所有小于给定数字的完美数字。如果没有,则该函数打印适当的消息。 我刚刚编写的程序编译得很好,但它只是部分工作。例如,如果输入的数字是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;
}
答案 0 :(得分:7)
您的代码中存在无限循环:
for(j=2;j<num;num++)
我认为应该是
for(j=2;j<num;j++)