编程实现:从键盘输入正整数m和n,找出[m,n]范围内的所有完数。完数是指:一个数所有的真因子(即除了自身以外的约数)之和,恰好等于它本身。例如:28=1+2+4+7+14,因此,28是一个完数。
(1)主函数功能:输入正整数m和n,调用子函数,输出指定范围内的所有完数。
(2)子函数功能:判断一个数是否是完数,返回值为bool型。
(3)输入输出格式参见样张:
#include<iostream>
using namespace std;
bool wan(int x)
{
int y,z=0;
for (y=1;y<x;y++)
if (x%y==0)
z+=y;
if (z==x)
return true;
else
return false;
}
int main(void)
{
int m,n,k;
cout<<"请输入两个正整数:";
cin>>m>>n;
if (m>n)
{
m=m+n;
n=m-n;
m=m-n;
}
cout<<"["<<m<<","<<n<<"]范围内所有的完数为:"<<endl;
for (k=m;k<=n;k++)
if (wan(k)==true)
cout<<k<<endl;
return 0;
}
运行结果如下: