- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于完全数的一个猜想及其证明
刘士杰 杨锡伟 项以江
(无锡市大桥实验中学214001)
在茫茫数字世界中,有这么一种奇妙的数:如果一个自然数除自身之外的所有因数之和等于它本身,这个数就叫做完全数.这样的数有几个,该怎样求解?就这个问题,1718年,小欧拉曾向约翰·伯努利请教,当时并未得解.如今我们借助计算机初步揭开了它神秘的面纱.
我们先借助计算机用穷举法来找这样的数,用Pascal语言代码找出100000000内的完全数,代码如下:
var n,i,s,j:longint;
begin
for j:=1 to 100000000 do
begin
s:=1;{加上因数1}
for i:=2 to trunc(sqrt(j)) do
if (j mod i)=0
then s:=s+i+(j div i);
if j=s then
writeln(j);
end;
end.
我们总共找到5个完全数:6,28,496,8128乍一看,完全数相互之间并没有明显的关系,完全数真的是毫无规律可言吗?在毫无头绪中,让我们先来试着分解一下完全数的质因数:6=2×3,28=22×7,496=24×31,8128=26×127212×8191.进而发现3=22?1,7=23?1,31=25?1,127=27?1, 8191=213?1.对照两组数据:
6=2×3 3=22?1
28=22×7 7=23?1
496=24×31 31=25?1
8128=26×127 127=27?1212×8191 8191=213?1
很自然,我们可以有如下猜想:
(2n)×(2n+1?1) =完全数
但是,对照上式,发现当n=3和5时所得出的120与2016不是完全数,分析发现此时2n+1?1为合数15、63,而n=1,2,4,6时2n+1?1为质数.于是我们对上式作如下修正:(2n)×(2n+1-1)=完全数,其中n为自然数(n≠0),且2n+1-1为质数.
这个猜想合理吗?可以证明吗?是的.证明如下:
令(2n)×(2n+1?1) =完全数x,(此时2n+1?1为质数),它除自身之外的所有因数之和为
=(1+2+22+…+2n)+ ( )
=2n+1?1+x×( )
=2n+1?1+ x??
将 中的x用x=(2n)×(2n+1?1)代入,则:
原式=2n+1?1+ x?(2n+1?1)
=x.
证明到此为止,并不复杂.
若2n+1?1为合数,则因数不止这些,所以120与2016不是完全数.于是, 通过100000000内完全数的探求,我们可以得到完全数的一个形式:
当n为自然数(n≠0),且2n+1?1为质数时,(2n)×(2n+1?1)=完全数.
囿于目前的知识水平,我们还没有证明:只要是完全数,就一定符合(2n)×(2n+1?1)的形式(其中n为自然数(n≠0),且2n+1?1为质数),在此我们大胆作出如下猜想:
完全数=(2n)×(2n+1?1),其中n为自然数(n≠0),且2n+1?1为质数.
同样地,我们验证这个猜想的设想是:用穷举法找出完全数,看是否存在反例.遗憾的是在具体操作时遇到了困难:我们的个人计算机没有这么强的运算能力,相信这个问题不难得到解决.
附录
附录是我们修改了程序代码,试图能找出多一点的完全数,一直找到n=15, (2n)×(2n+1?1)=2147450880时,也未有新的完全数.
Pascal程序代码:
var i,j,n,s,s1,k:longint;
f:text;
begin
assign(f,'d:\wq.txt');
rewrite(f);
j:=1;
for i:=1 to 15 do
begin
j:=j*2;
s:=j*(j*2-1);
s1:=1;
for n:=2 to trunc(sqrt(s)) do
if s mod n =0 then s1:=s1+n+s div n;
if s=s1 then
begin
writeln(f,'n=',i,':');
write(f,s,'=');
write(f,2,'(',i,')','*','(',2,'(',i+1,')','-1)=',j,'*',j*2-1);
writeln(f);writeln(f);
end
else
文档评论(0)