完数:如果一个数恰好等于它的因子之和,则称该数为“完数”。例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
#include <stdio.h>
bool Perfect(int n)//写一个完数函数
{
if (n <= 0)//判断是否大于0,小于等于0返回错误
{
return false;
}
int sum = 1;//申请一个变量sum,用于保存1000以内各个数的真因子之和
for (int i = 2; i < n; i++)//从2开始求出100以内所有的真因子,并将各因子求和
{
if (n % i == 0)
{
sum += i;
}
}
if (sum == n)//判断真因子的和是否和这个数相等
{
return true;
}
else
{
return false;
}
}
void Show_Perfect(int n)//打印函数
{
printf("%d its factors are ", n);//打印这个完数
for (int i = 2; i< n; i++)
{
if (n% i == 0)
{
printf(",%d ", i);//打印完数的真因子
}
}
printf("\n");//换行
}
int main()//主函数
{
for (int i = 2; i <= 1000; i++)//求1000以内的完数
{
bool tmp = Perfect(i);//调用完数函数,
if (tmp)
{
Show_Perfect(i);//调用打印函数
}
}
}