修改了一下你的代码,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;
}
觉得有用的话采纳一下哈