| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 361 人关注过本帖
标题:[转载][分享]完数
只看楼主 加入收藏
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
结帖率:100%
收藏
 问题点数:0 回复次数:1 
[转载][分享]完数

[百度百科]

完数
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.(6的因子是1,2,3)
求1000以内的完数的C语言代码如下:

#include <stdio.h>
#define MAX 1000

int main(void)
{
int i, j, sum;

for(i = 2; i <= MAX; i++)
{
for(j = 1, sum = 0; j <= i / 2; j++)
{
if(i % j == 0)
sum += j;
}

if(i == sum)
printf("%d\n", i);
}

getchar();
return 0;
}

输出结果为:
6,28,496,
即1000以内的完数只有6、28、496三个数字。

求N以内的完数的帕斯卡语言代码如下:
var s,i,m:qword;
begin
for s:=1 to n do begin
n:=0;
for i:=1 to s-1 do
begin
if s mod i=0 then m:=m+i;
end;
if m=s then write(s)
end;
writeln('over');
end.

得出了第四个完数 8128
--------- 完数(Prefect number)的形式------------------------------

欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(p-1)*(2^p-1)
其中2^p-1是素数

完全数(Perfect number)是一些特殊的自然数:它所有的真因子(即除了本身以外的约数)的和,
恰好等于它本身。

例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3
=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加
,1+2+4 + 7 + 14=28。后面的数是496,8128。

古希腊数学家欧几里德是通过 2^(n-1)*(2^n-1) 的表达式发现头四个完全数的。

当 n = 2^1*(2^2-1) = 6
当 n = 2^2*(2^3-1) = 28
当 n = 2^4*(2^5-1) = 496
当 n = 2^6*(2^7-1) = 8128
欧几里德证明了:一个偶数是完数,当且仅当它具有如下形式:2^(n-1)*(2^n -1)。


尽管没有发现奇完数,但是当代数学家奥斯丁·欧尔(Oystein Ore)证明,若有奇完全
数,则其形状必然是12p + 1或36p + 9的形式,其中p是素数。在1018以下的自然数中奇完
数是不存在的。

3
例子
6,28、496,8128,33550336,8589869056(10位),137438691328(12位),
2305843008139952128(19位)……


偶完数都是以6或8结尾。如果以8结尾,那么就肯定是以28结尾。
除6以外的偶完数,把它的各位数字相加,直到变成一位数,那么这个一位数一定是1(亦即
:除6以外的完数,被9除都余1。):
28:2+8=10,1+0=1
496:4+9+6=19,1+9=10,1+0=1

所有的偶完数都可以表达为2的一些连续正整数次幂之和,从2p - 1到22p - 2: &lt;注:以下a的n次方表示形式为a(n)&gt;
6=2(1 ) + 2(2 )
28=2(2 ) + 2(3) + 2(4)
8128=2(6) + 2(7) + ... + 2(12)
33550336=2(12) + 2(13 ) + ... + 2(24)

每一个偶完数都可以写成连续自然数之和:
6=1+2+3
28=1+2+3+4+5+6+7;
496=1+2+3+…+30+31

除6以外的偶完数,还可以表示成连续奇数的立方和(被加的项共有):
28=1(3) + 3(3)
496=1(3) + 3(3) + 5(3) + 7(3)
8128=1(3 ) + 3(3) + 5(3) + ... + 15(3)
33550336=1(3) + 3(3) + 5(3) + ... + 125(3) + 127(3)

每一个完数的所有约数(包括本身)的倒数之和,都等于2:
1/1 + 1/2 + 1/3 + 1/6 =2
1/1 + 1/2 + 1/4 + 1/7 + 1/14 + 1/28 =2
它们的二进制表达式也很有趣:
(6)10 = (110)2
(28)10 = (11100)2?

搜索更多相关主题的帖子: 分享 
2007-11-06 23:25
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
欧,神奇的数字~~

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-07 08:16
快速回复:[转载][分享]完数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014642 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved