一个数如果恰好等于它的因子(不包含自身的所有因子)之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。
#include <stdio.h>
void main()
{
int i,j,s,m;
for (i=6;i<=999;i++)
{
s=0;
for (j=1;j<=i;j++)
if(i%j==0) s=s+j;
if(i-s==0)
{
printf("%d its factors are ",i);
for (m=1;m<=i;m++)
if(i%m==0)
printf("%d",m);
printf("\n");
}
}
}
这是我自己编的,为什么就得不到结果呢,哪里出错了,谢谢了
最后要求按照下面格式舒服其因子:
6 its factors are 1,2,3
程序不需要大家重新写,我只是想知道我的程序哪里错了。谢谢了
j=i和m=i,为什么不行啊??刚学C,还有好多不懂,呵呵
追答就用你的例子说明吧:
“6的因子为1、2、3,而6=1+2+3,因此6是完数。”
加上“=”是这样的:
“6的因子为1、2、3、6,而6=1+2+3+6(怎么可能),因此6是完数。”肯定不对啦,所以程序没结果
不用再写一个了,帮我看下我的程序错在哪里了吧
追答#include
void main()
{
int i,j,s,m;
for (i=6;i<=999;i++)
{
s=0;
for (j=1;j<i;j++) //修改,j<i即可
if(i%j==0) s=s+j;
if(i-s==0)
{
printf("%d its factors are ",i);
for (m=1;m<i;m++) //修改,m<i即可
if(i%m==0)
printf("%4d",m); //输出效果优化
printf("\n");
}
}
}