注册 登录
编程论坛 新人交流区

[求助]求1000以内完数时遇到的问题~

花飞雪 发布于 2007-10-25 21:38, 605 次点击

main()
{
int n,a,b,s=0;

for(n=6;n<=1000;n++)
{
for(a=2;a<=n;a++)
if((n%a)==0)/*判断是否是因子*/
{b=n/a;s+=b;}
if(s==n)
printf("Result:%d\n",n);
s=0;/*将s归零*/
}

}
这个代码是 S有什么意义?? 如果n%a==0的话 那a是n的一个因子 那b=n/a b也不是n的一个因子吗? s=s+b 中的s怎么会等于n呢~~
前面错了 是完数 呵呵~~

[此贴子已经被作者于2007-10-25 21:46:46编辑过]

9 回复
#2
nuciewth2007-10-25 21:40

貌似不是判断素数.

#3
花飞雪2007-10-25 21:45
是求1000以内的完数 输出结果是 6 28 496 有谁明白的说下好吗~捆饶好久了~~

[此贴子已经被作者于2007-10-25 21:47:08编辑过]


#4
nuciewth2007-10-25 21:51
呵呵.我就知道.
#5
nuciewth2007-10-25 21:52
完数是指小于它的因子之和等于它本身.
#6
冰山雪狼2007-10-25 21:53
呵呵 我也不知道,,,等待高手来吧
#7
nuciewth2007-10-25 21:55
for(num=1;num<=1000)
{
sum=1;
for(i=2;i<num;i++)
{
if(num%i==0)
{
sum+=i;
}
}
if(num==sum)
{
printf("%d\n",num);
}
}
#8
nuciewth2007-10-25 21:56
6=1+2+3
28=1+2+4+7+14
#9
nuciewth2007-10-25 21:58
for(num=1;num<=1000)
{
sum=1;
t=num;
for(i=2;i<t;i++)
{
if(num%i==0)
{
t=num/i;
sum+=i+t;
}
}
if(num==sum)
{
printf("%d\n",num);
}
}
#10
花飞雪2007-10-25 22:48

哦 我明白了 谢谢nuciewth斑竹了~~思考的时候 我有点死脑筋了~~n%a==0 b=n/a 得出1个因子存放到b 然后通过s来累加这个数的一系列因子~

1