完数的定义:如果一个数恰好等于它的真因子(即除了自身以外的约数)之和,则称该数为“完全数”。
#include<iostream>
using namespace std;
int main()
{
int s;
cout<<"1000以内完数有"<<'\n'; //若一个数等于其因数之和,则为完数
for(int i=1;i<=1000;i++)
{
s=0; //s值初始化
for(int j=1;j<i;j++) //求一个数的因数,若是则累加到s
{
if(i%j==0) //判断此时的j是否为i的因子
s+=j;
}
if(s==i)cout<<s<<'\t';
}
return 0;
}
本体使用了两个for循环,第一个for是将1000的数全过一遍,第二个for作用是找其此时对应i数的因子并相加。
每找完一个数的因子并相加之和s,都要对s进行初始化,不让前一个数的因子和s干扰下一个数的判断。