检查完美数字的程序 - 出错了

时间:2014-12-20 01:22:25

标签: c++ numbers

我必须编写一个获取数字的函数,并打印所有小于给定数字的完美数字。如果没有,则该函数打印适当的消息。 我刚刚编写的程序编译得很好,但它只是部分工作。例如,如果输入的数字是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 个答案:

答案 0 :(得分:7)

您的代码中存在无限循环:

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

我认为应该是

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