用计算机求完全数,完全数

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

如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数。[1]

中文名

完全数

外文名

Perfect number

别    名

完美数或完备数类    型

特殊的自然数

性质1

所有的完全数都是三角形数

性质2

可以表示成连续奇立方数之和

完全数定义

编辑

语音

如果一个数恰好等于它的真因子之和,则称该数为“完全数”[2]

。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(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,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

完全数特有性质

编辑

语音

(1)所有的完全数都是三角形数。例如:6=1+2+3;28=1+2+3+...+6+7;496=1+2+3+...+30+31;8128=1+2+3…+126+127。

(2)所有的完全数的倒数都是调和数。例如:1/1+1/2+1/3+1/6=2;1/1+1/2+1/4+1/7+1/14+1/28=2;1/1+1/2+1/4+1/8+1/16+1/31+1/62+1/124+1/248+1/496=2。

(3)可以表示成连续奇立方数之和。除6以外的完全数,都可以表示成连续奇立方数之和,并规律式增加。例如:28=1³+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。

(4)都可以表达为2的一些连续正整数次幂之和。不但如此,而且它们的数量为连续质数。例如:6=2^1+2^2;28=2^2+2^3+2^4;496=2^4+2^5+2^6+2^7+2^8;8128=2^6+2^7+2^8+2^9+2^10+2^11+2^12;33550336=2^12+2^13+……+2^24。

(5)完全数都是以6或8结尾。如果以8结尾,那么就肯定是以28结尾。(科学家仍未发现由其他数字结尾的完全数。)

(6)各位数字辗转式相加个位数是1。除6以外的完全数,把它的各位数字相加,直到变成个位数,那么这个个位数一定是1。例如:28:2+8=10,1+0=1;496:4+9+6=19,1+9=10,1+0=1;8128:8+1+2+8=19,1+9=10,1+0=1;33550336:3+3+5+5+0+3+6=28,2+8=10,1+0=1。

(7)它们被3除余1、被9除余1、1/2被27除余1。除6以外的完全数,它们被3除余1,9除余1,还有1/2被27除余1。28/3 商9余1,28/9 商3余1,28/27 商1余1。496/3 商165余1,496/9 商55余1。8128/3 商2709余1,8128/9 商903余1,8128/27 商301余1。

完全数历史

编辑

语音

066d6750a432ad155d1059dd17bd83c4.png

图1 毕达哥拉斯公元前6世纪的毕达哥拉斯是最早研究完全数的人,他已经知道6和28是完全数。毕达哥拉斯曾说:“6象征着完满的婚姻以及健康和美丽,因为它的部分是完整的,并且其和等于自身。”有些《圣经》注释家认为6和28是上帝创造世界时所用的基本数字,因为上帝创造世界花了六天,二十八天则是月亮绕地球一周的日数。圣·奥古斯丁说:6这个数本身就是完全的,并不因为上帝造物用了六天;事实上,因为这个数是一个完全数,所以上帝在六天之内把一切事物都造好了。

在中国文化里:有六谷、六畜、战国时期的六国、秦始皇以六为国数、六常(仁、义、礼、智、信、孝)、天上四方有二十八宿等等,6和28,在中国历史长河中,之所以熠熠生辉,是因为它是一个完全数。难怪生有的学者说,中国发现完全数比西方还早呢。

00603c48f61229719699ac21313f3877.png

图2 数论论著完全数诞生后,吸引着众多数学家与业余爱好者像淘金一样去寻找。它很久以来就一直对数学家和业余爱好者有着一种特别的吸引力,他们没完没了地找寻这一类数字。接下去的两个完数看来是公元1世纪,毕达哥拉斯学派成员尼克马修斯发现的,他在其《数论》一书中有一段话如下:也许是这样,正如美的、卓绝的东西是罕有的,是容易计数的,而丑的、坏的东西却滋蔓不已;是以盈数和亏数非常之多,杂乱无章,它们的发现也毫无系统。但是完全数则易于计数,而且又顺理成章:因为在个位数里只有一个6;十位数里也只有一个28;第三个在百位数的深处,是496;第四个却在千位数的尾巴颈部上,是8128。它们具有一致的特性:尾数都是6或8,而且永远是偶数。但在茫茫数海中,第五个完全数要大得多,居然藏在千万位数的深处!它是33550336,它的寻求之路也更加扑朔迷离,直到十五世纪才由一位无名氏给出。这一寻找完全数的努力从来没有停止。电子计算机问世后,人们借助这一有力的工具继续探索。笛卡尔曾公开预言:“能找出完全数是不会多的,好比人类一样,要找一个完美人亦非易事。”时至今日,人们一直没有发现有奇完全数的存在。于是是否存在奇完全数成为数论中的一大难题。只知道即便有,这个数也是非常之大,并且需要满足一系列苛刻的条件。

完全数疑难问题

编辑

语音

(1)到底有多少完全数?

答:寻找完全数并不是容易的事。经过不少数学家研究,到2018年为止,一共找到了51个完全数。[1]

(2)有没有奇完全数?

答:奇怪的是,已发现的51个完全数都是偶数,会不会有奇完全数存在呢?如果存在,它必须大于10^300。至今无人能回答这些问题。尽管没有发现奇完全数,但是当代数学家奥斯丁·欧尔证明,若有奇完全数,则其形式必然是12^p+1或36^p+9的形式,其中p是素数。在10^300以下的自然数中奇完全数是不存在的。

另外,如果存在奇完全数,则它们必能表示p^2*q的形式,除6外的偶完全数亦有此性质。

完全数计算方法

编辑

语音

完全数推导公式

大数学家欧拉曾推算出完全数的获得公式:如果p是质数,且2^p-1也是质数,那么(2^p-1)X2^(p-1)便是一个完全数。

例如p=2,是一个质数,2^p-1=3也是质数,(2^p-1)X2^(p-1)=3X2=6,是完全数。

例如p=3,是一个质数,2^p-1=7也是质数,(2^p-1)X2^(p-1)=7X4=28,是完全数。

例如p=5,是一个质数,2^p-1=31也是质数,(2^p-1)X2^(p-1)=31X16=496是完全数。

但是2^p-1什么条件下才是质数呢?事实上,当2^p-1是质数的时候,称其为梅森素数。到2013年2月6日为止,人类只发现了48个梅森素数,较小的有3、7、31、127等。

完全数计算机枚举法

例如:

(1)利用VB编程求10000以内完全数。Dim a as Integer,b as Integer,c as Integer

For a = 1 To 10000

c = 0

For b = 1 To a \ 2

If a Mod b = 0 Then c = c + b

Next b

If a = c Then Print Str(a)

Next a

(2)利用C语言编程求1000以内完全数。#include

int main()

{

int i, j, s, n; /*变量i控制选定数范围,j控制除数范围,s记录累加因子之和*/

printf("请输入所选范围上限:");

scanf("%d", &n); /* n的值由键盘输入*/

for( i=2; i<=n; i++ )

{

s=0; /*保证每次循环时s的初值为0*/

for( j=1; j

{

if(i%j == 0) /*判断j是否为i的因子*/

s += j;

}

if(s == i) /*判断因子这和是否和原数相等*/

printf("It's a perfect number:%d\n", i);

}

return 0;

}

10debc23a6cf2e62f13a15701acd45c0.png

图3Java代码运行结果(3)利用java语言编程求1000以内完全数。public class test46 {

public static void main(String args[]) {

int sum = 0;

int i = 2,j = 1;

for(i = 2; i <= 10000; i++)

{

for(j = 1; j 

{

if(i%j == 0)

sum = sum+j;

}

if(sum == i)

System.out.println(" " + sum);

sum = 0;

}

}

}

(4)利用JavaScript语言编程求N以内完全数。function perfectNumber(N){

var nums = [], sum, i, j;

//0除以任意数都是0,所以从1开始

for (i = 0; i <= N; i++){

sum = 0

//完全数除以自己一半,求余肯定会大于0,所以用i/2

for(j = 1; j <= i/2; j++){

if (i % j === 0){

sum += j;

}

}

if (sum === i){

nums.push(i);

}

}

return nums;

}

完全数梅森素数

编辑

语音

b5d3c9959590acc4ef871d22f609dbd2.png

图4 梅森素数表古希腊数学家欧几里得在名著《几何原本》中证明了素数有无穷多个,并论述完全数时提出:如果2^P-1是素数(其中指数P也是素数),则2^(P-1)(2^P-1)是完全数。瑞士数学家和物理学家欧拉证明所有的偶完全数都有这种形式。因此,人们只要找到2^P-1型素数,就可以发现偶完全数了。数学界将2^P-1型素数称为“梅森素数”(Mersenne prime),因为法国数学家和法兰西科学院奠基人梅森在这方面的研究成果较为卓著。梅森素数貌似简单,但探究难度却极大。它不仅需要高深的理论和纯熟的技巧,而且还需要进行艰巨的计算。到2018年为止,人类仅发现51个梅森素数。[1]

值得提出的是:在梅森素数的基础研究方面,法国数学家鲁卡斯和美国数学家雷默都做出了重要贡献;以他们命名的“鲁卡斯-雷默方法”是已知的检测梅森素数素性的最佳方法。此外,中国数学家和语言学家周海中给出了梅森素数分布的精确表达式,为人们寻找梅森素数提供了方便;这一研究成果被国际上命名为“周氏猜测”。

梅森素数表如图4所示。

完全数已发现完全数

编辑

语音

1……6

2……28

3……496

4……8,128

5……33,550,336

6……8,589,869,056

7……137,438,691,328

8……2,305,843,008,139,952,128

9……2,658,455,991,569,831,744,654,692,615,953,842,176

10……191,561,942,608,236,107,294,793,378,084,303,638,130,997,321,548,169,216

11……13,164,036,458,569,648,337,239,753,460,458,722,910,223,472,318,386,943,117,783,728,128

12……14,474,011,154,664,524,427,946,373,126,085,988,481,573,677,491,474,835,889,066,354,349,131,199,152,128

……

……

47 ……2^42643800 X (2^42643801-1)

48 ……2^57885160 X (2^57885161-1)

由于后面数字位数较多,例子只列到12个,第13个有314位。

到第39个完全数有25674127位数,据估计它以四号字打出时需要一本字典大小的书。

词条图册

更多图册

参考资料

1.

A strange definition of perfect

.Plus Magazine[引用日期2020-06-10]

2.

C语言实例 完全数

.IT学习网[引用日期2014-02-14]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值