输入2个正整数m和n(m>=1,n<=1000),输出m~n之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)
我这个哪里错了?求指导
# include<stdio.h>
int main()
{int factorsum(int number);
int m,n,a;
m>=1;
n<=1000;
scanf("%d,%d",&m,&n);
for (a=m;a<=n;a++)
{if (a=factorsum(a))
printf("%d",a);
}
}
int factorsum(int number)
{int i=1,a=0;
for(i=1;i<number;i++)
{if(number%i==0)
a=a+i;
}
return a;
}
运行不出结果
#include<stdio.h>
int main()
{
int factorsum(int number);
int m,n,a;
//这两句去掉,没有意义
//m>=1;
//n<=1000;
scanf("%d,%d",&m,&n);
for (a=m;a<=n;a++)
{
if (a==factorsum(a))//判断是否相等应该是==if (a=factorsum(a))
printf("%d ",a);//输出元素间加个空格分开printf("%d",a);
}
}
int factorsum(int number)
{
int i=1,a=0;
for(i=1;i<number;i++)
{
if(number%i==0)
a=a+i;
}
return a;
}
追问
结果应该还有1,比如输入1,100 输出应该是1,6,28
请问要怎么改呢?
factsum函数,for循环条件改成i<=number
不对,不要那么改,直接在他循环外面加判断,如果number==1直接return1
而且个人觉得1不算完数
改成i<=number后就只输出一个1了,我把主函数多加了一个if(m==1)printf("%d ",m);。
追答最好在factsum里判断,如果number==1直接return 1
最好在factsum里判断,如果number==1直接return 1
最好在factsum里判断,如果number==1直接return 1
最好在factsum里判断,如果number==1直接return 1