1.给出一个数判断是不是完数
2.将输出格式打印成 完数=因子1+因子2+…… 的格式
3.给出一个范围,求出其中所有的完数
以下是代码
#include <stdio.h>
//判断完数
bool IsPerfect(int n)//自己定义的函数首字母大写,以免与库中的函数重名
{
int tmp = 0;//定义一个临时变量
for(int i = 1;i<n;i++)//for循环通常习惯左闭右开的模式
{
if(n%i == 0)
{
tmp+=i;
}
}
return tmp==n;
}
//打印格式
void Func(int n)
{
bool flg=true;//为了去掉1前面的“+”,还可以把“1”这种情况单列出来
printf("%d = ",n);
for(int i=1;i<n;i++)
{
if(n%i==0)
{
if(flg)
{
flg=flase;
printf("%d ",i);
}
else
{
printf("+ %d",i);
}
}
}
printf("\n");
}
//输出完数
int main(int n)//n代表查找完数的范围
{
for(int i=1;i<n;i++)
{
if(IsPerfect(i))//调用前面的函数
{
Func(i);//调用前面的函数
}
}
return 0;
}