当前位置: 代码迷 >> C语言 >> 求 完数 不知道正不正确
  详细解决方案

求 完数 不知道正不正确

热度:123   发布时间:2005-04-16 00:57:00.0
求 完数 不知道正不正确
/********************************************************************************/
/*题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。*/
/*      例如6=1+2+3.                                                                    */
/*      编程找出1000以内的所有完数。                                             */
/********************************************************************************/

我编了出来 但在2到1000内 只有6 没有其他数了 请问各高手在1000内还有其他数吗

谢谢
搜索更多相关的解决方案: 之和  

----------------解决方案--------------------------------------------------------
穷举。。。
----------------解决方案--------------------------------------------------------
我想知道有多少个
网上说是 6   28  还有一个不知道是什么数
我写了程序 但只求出一个6  
28=1*2*2*7
但28!=1+2+2+7
是不是我理解错误
谢谢帮忙
----------------解决方案--------------------------------------------------------
28 = 1 + 2 + 4 + 7 + 14
----------------解决方案--------------------------------------------------------
那可能是我理解错误
28=1+2+4+7+14 是怎样得出来的
(什么是因子?不同于因数吗?)
----------------解决方案--------------------------------------------------------

#include <iostream> using namespace std; void main() { for(int i=1; i<1000; i++){ int sum=0; for(int j=1; j<=i/2; j++) if(i%j==0) sum+=j; if(sum==i) cout <<i<<"是完数.\n"; } }

--------------------------- #include<stdio.h> main() { int x,i,sum; for(x=2;x<=1000;x++) { sum=0; for(i=1;i<=x/2;i++) if(x%i==0) sum+=i; if(sum==x) printf("完数:%d\n",sum); } } 晕死了。发的时候他突然说网页无法显示(发了nn次都没发出去)。我没办法上传抓图。不过大家可以上机验证一下。答案是 6 28 496


----------------解决方案--------------------------------------------------------

/********************************************************************************/ /*题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。*/ /* 例如6=1+2+3. */ /* 编程找出1000以内的所有完数。 */ /********************************************************************************/ #include <stdio.h>

void main() { int count; for(int i=1;i<=1000;i++) { count=1; for(int j=2;j<=i/2;j++) { if(i%j==0) count+=j; } if(i==count) printf("%5d",i); } printf("\n"); }


----------------解决方案--------------------------------------------------------
为什么是i/2
----------------解决方案--------------------------------------------------------

1000以内的完数有:
6 24 28 496

Press any key to continue


----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int i,j,s;
for(i=1;i<=1000;i++)
{
for(j=2;j<=i/2;j++)
{ s=1;
if(i%j==0)
s=s+j;
}
if(i==s)
printf("%5d",i);
}
printf("\n");
}和上面有什么区别,为什么这个就不能运行呢
----------------解决方案--------------------------------------------------------
  相关解决方案