所有真因子之和刚好等于其本身的数称为完美数。
例如:6的真因子为1、2、3,之和刚好为6,则6是完美数。
现输入一个数字,判断其是否是完美数。
源代码如下:
#include<stdio.h>
//判断完美数
int f(int x) //在子函数里判断输入的数是否是完美数
{
int j,s=0;
for(j = 1;j < x;j++)
{
if(x%j == 0) s += j; //让输入的数的真因子相加
}
if(s == x) return 1; //如果真因子之和等于输入的数本身,则返回1,反之,返回0
else return 0;
}
int main()
{
int a;
scanf("%d",&a);
if(f(a)) printf("%d是完美数\n",a); //如果返回值为1,则输入的数是完美数
else printf("%d不是完美数\n",a); //如果返回值为0,则输入的数不是完美数
return 0;
}
运行结果:
例1:
输入6
例2:
输入7