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