题目:使用函数输出指定范围内的完数:输入两个正整数m和n(1<=m,n<=1000),输出m与n之间的完数,完数就是因子和它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如:factorsum(12)的返回值是16(1+2+3+4+6)。
#include<stdio.h>
int factorsum(int i);
int main(){
int n,m,i,count;
printf("Enter m,n:");
scanf("%d%d",&m,&n);
if(m>n){
printf("please again!\n");
}
printf("Enter m,n:");
scanf("%d%d",&m,&n);
if(m<n){
for(i=m;i<=n;i++){
factorsum(i);
if(count==i){
printf("%d\n",i);
}
}
}
return 0;
}
int factorsum(int i){
int j,count;
count=0;
for(j=1;j<=i/2;j++){
if(i%j==0){
count=count+j;
}
}
return count;
}
但是结果显示
Enter m,n:6 3
please again!
Enter m,n:3 6
3
4
5
6
Press any key to continue
这样显然不对,最小的一个完数应该是6,他应该只输出6.还有count是不是定义有问题?很纠结,能帮忙说一下问题出在哪里以及怎么改吗?谢谢!
凤凰求蛊