完数
完数:
求某一范围内完数的个数。
如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。
解题思路:先输入上限,再根据for循环嵌套外层循环遍历所求范围,内层循环寻找因子,再根据条件判断是否为因子,记录因子之和与该数是否相等,判断是否输出。
代码:
#include<iostream>
using namespace std;
int main()
{
int i,j,n,x;
cout<<"请输入所选范围上限:";
cin>>n;
for(i=2;i<=n+1;i++)
{
x=0;
for(j=1;j<i;j++)
{
if(i%j==0)
x+=j;
}
if(i==x)
cout<<"It's a perfect number:"<<i<<endl;
}
return 0;
}
拓展:
对于一个整数来说,其最大因子为n/2,所以可以判断因子的循环范围为1~2/n
代码:
#include<iostream>
using namespace std;
int main()
{
int i,j,n,x;
cout<<"请输入所选范围上限:";
cin>>n;
for(i=2;i<=n;i++)
{
x=0;
for(j=1;j<=i/2;j++)
{
if(i%j==0)
x+=j;
}
if(i==x)
cout<<"It's a perfect number:"<<i<<endl;
}
return 0;
}