完数(函数)【中】
题目描述
输入两个正整数m和n(m≥1,n≤10000),从小到大输出m~n(包括m,n)之间的所有完美数。完美数就是真因子之和与它本身相等的数,真因子就是小于本身的因子。要求定义并调用函数factorsum(number),它的功能是返回number的所有真因子之和。例如:factorsum(12)的返回值是16,即1+2+3+4+6。
输入
10 500
输出
28 490
输入
1 20
输出
6
代码详情
#include<stdio.h>
int factorsum(int number)//判断完美数
{
int sum=0;//sum一定要初始化哦~
if(number==1)
return 0;//如果判断的数为1,则直接结束
for(int i=1;i<number;i++)//从1至number(不包括其本身)逐个判断是否为其因子
{
if(number%i==0)//如果可以被整除,说明为其因子
sum+=i;//因子之和
}
return sum;
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)//输入多组
{
for(int i=m;i<=n;i++)
{
if(i==factorsum(i))//调用函数进行判断
printf("%d ",i);
}
}
return 0;
}
运行结果