//求完数,完数即一个数的所有因子之和等于这个数本身,例如6=1+2+3
void WuShu()
{
//long a[30];//如果是30就会报错,如果是300就不会
/*a[1]=1;*/
int sum=0;
cout<<"10000以内的完数有:"<<endl;
for(int i=2;i<=10000;i++)
{
int m=2;
long a[80];
memset(a,0,sizeof(a));//将数组的值全部初始化为0
a[1]=1;
for(int j=2;j<i;j++)
{
if(i%j==0)
{
a[m]=j; m++;
}
}
for(int n=1;n<m;n++)
{
sum+=a[n];
}
if(sum==i)
{
cout<<i<<" ";
sum=0; /*memset(a,0,sizeof(a));*///有没有这行都没有影响 /*a[0]=NULL;*/
}
else sum=0;
}
cout<<endl;
}
在编写这个代码时调试过程出现很多意外的数值,因为最初把所有的变量都设置为全局变量了。还有一个就是数组,会出现数组损坏的问题,但是将数组的大小改大一些就不会出现问题了。