#include<stdio.h>void main(){ int n,i,Sn,m,k; for(n=2;n<=1000;n++) {Sn=0; for(i=2;i<=n;i++) {if(n%i==0) Sn=Sn+(n/i);}
if(n==Sn) {printf("%d its factors are ",n); for(m=2;m<=n;m++) {if(n%m==0) printf("%d ",n/m);} printf("\n"); } } }如上:这样可以正确以%d its factors are ...输出1000以内的完数(如),但是如果把倒数第六行 printf("%d ",n/m);}改成k=n/m; printf("%d ",k);}输出的完数的因子就会重复很多次,这是为什么?(图 ep:)
C语言编程求助
答案:1 悬赏:20 手机版
解决时间 2021-05-07 08:43
- 提问者网友:萌卜娃娃
- 2021-05-06 09:38
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-05-06 10:27
#include<stdio.h>
void main()
{ int n,i,Sn,m,k;
for(n=2;n<=1000;n++)
{Sn=0;
for(i=2;i<=n;i++)
{if(n%i==0) Sn=Sn+(n/i);}
if(n==Sn)
{printf("%d its factors are ",n);
for(m=2;m<=n;m++)
{if(n%m==0)
{ k=n/m;
printf("%d ",k);
}
}
printf("\n");
}
}
}
//可以,你就是少加了}
如
{ k=n/m;
printf("%d ",k);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯