2-10000完全数

来源:百度知道 编辑:UC知道 时间:2024/07/05 22:39:16
#include<iostream>
using namespace std;
int main()
{
int m,n,sum=0;
cout<<"2-10000之内的所有完全数有:"<<endl;
for(m=2;m<=10000;m++)
{
for(n=2;n<=m/2;n++)
{
if(m%n==0)
sum=sum+n;
}
if(sum==m)
continue;
cout<<m<<" ";
}
return 0;
}
高手指下错
怎么改?

continue

第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6 也就是说恰好能被2整除的约数是其最大的约数,循环中的m/2即由此而来。
#include<iostream>
using namespace std;
int main()
{
int m,n,sum=0;
cout<<"2-10000之内的所有完全数有:"<<endl;
for(m=2;m<=10000;m++)
{
for(n=1;n<=m/2;n++) //1也是其约数从1开始。也可以给sum 初值1就可以从2开始了
{
if(m%n==0)

sum=sum+n;
}
if(sum==m)
cout<<m<<" ";
sum=0;//此一定要从新清0,因为要重新判断下一个数
continue;
}
return 0;
}