枫溪02 2021-10-29 15:08 采纳率: 84.6%
浏览 37
已结题

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;
}
为啥输出为空

  • 写回答

1条回答 默认 最新

  • -Undefined_ 2021-10-29 15:14
    关注

    修改了一下你的代码,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;
    }
    

    觉得有用的话采纳一下哈

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月29日