ex::
例如6的因子为1,2,3,而6=1+2+3,因此6是完美数,编程找出1000内的所有完美数。
#include <iostream>
#define M 1000 //定义寻找范围
using namespace std;
int main(int argc, char** argv) {
//保存因子
int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;
int i,j,n,s;
//枚举每一个数
for(j=2;j<=M;j++)
{
n=0;
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
n++;//当可以整除时,记录位置,对相应的因子进行赋值
s=s-i;//减去因子
switch(n)//判断因子在何处
{
case 1:k0=i;break;
case 2:k1=i;break;
case 3:k2=i;break;
case 4:k3=i;break;
case 5:k4=i;break;
case 6:k5=i;break;
case 7:k6=i;break;
case 8:k7=i;break;
case 9:k8=i;break;
case 10:k9=i;break;
//case 1:k0=i;break;
}
}
}
//若减去所有因子后恰巧为0,则是完美数
if(s==0)
{
cout<<j<<"是一个完美数,它的因子是:";
if(n>1)
cout<<k0<<" "<<k1<<" ";
if(n>2)
cout<<k2<<" ";
if(n>3)
cout<<k3<<" ";
if(n>4)
cout<<k4<<" ";
if(n>5)
cout<<k5<<" ";
if(n>6)
cout<<k6<<" ";
if(n>7)
cout<<k7<<" ";
if(n>8)
cout<<k8<<" ";
if(n>9)
cout<<k9<<" ";
cout<<endl;
}
}
return 0;
}