c语言关于因子的问题

img


#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,j,sum=0;
scanf("m=%d\nn=%d",&m,&n);
printf("%d~%d之间的完数有:",m,n);
for(i=m;i<=n;i++)
{
if(i==1)
continue;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
printf("%d\t",i);
}
return 0;
}
为啥输出为空

修改了一下你的代码,for循环里sum要初始化为0,不然进入循环后,sum就会保存之前的i的因子和

#include<stdio.h>
#include<math.h>
int main() {
    int m,n,i,j,sum=0;
    printf("m=");
    scanf("%d",&m);
    printf("n=");
    scanf("%d",&n);
    printf("%d~%d之间的完数有:",m,n);
    for(i=m; i<=n; i++) {
        sum=0;
        if(i==1)
            continue;
        for(j=1; j<i; j++) {
            if(i%j==0)
                sum+=j;
        }
        if(sum==i)
            printf("%d\t",i);
    }
    return 0;
}

觉得有用的话采纳一下哈