完全數(Perfect number),又稱完美數或完備數,是一些特殊的自然數。它所有的真因子(即除了自身以外的約數)的和(即因子函數),恰好等于它本身。如果一個數恰好等于它的因子之和,則稱該數為“完全數”。完數即完美數,所有的偶完數都可以表達為2的一些連續正整數次冪之和,除6以外的偶完數,還可以表示成連續奇數的立方和。
中文名完全數
英文名Perfect number
類型特殊的自然數
別稱完美數或完備數
起源歷史公元前6世紀的畢達哥拉斯是最早研究完全數的人,他已經知道6和28是完全數。畢達哥拉斯曾說:“6象征著完滿的婚姻以及健康和美麗,因為它的部分是完整的,并且其和等于自身。”有些《圣經》注釋家認為6和28是上帝創造世界時所用的基本數字,因為上帝創造世界花了六天,二十八天則是月亮繞地球一周的日數。圣·奧古斯丁說:6這個數本身就是完全的,并不因為上帝造物用了六天;事實上,因為這個數是一個完全數,所以上帝在六天之內把一切事物都造好了。
在中國文化里:有六谷、六畜、戰國時期的六國、秦始皇以六為國數、六常(仁、義、禮、智、信、孝)、天上四方有二十八宿等等,6和28,在中國歷史長河中,之所以熠熠生輝,是因為它是一個完全數。難怪生有的學者說,中國發現完全數比西方還早呢。
完全數誕生后,吸引著眾多數學家與業余愛好者像淘金一樣去尋找。它很久以來就一直對數學家和業余愛好者有著一種特別的吸引力,他們沒完沒了地找尋這一類數字。接下去的兩個完數看來是公元1世紀,畢達哥拉斯學派成員尼克馬修斯發現的,他在其《數論》一書中有一段話如下:也許是這樣,正如美的、卓絕的東西是罕有的,是容易計數的,而丑的、壞的東西卻滋蔓不已;是以盈數和虧數非常之多,雜亂無章,它們的發現也毫無系統。
但是完全數則易于計數,而且又順理成章:因為在個位數里只有一個6;十位數里也只有一個28;第三個在百位數的深處,是496;第四個卻在千位數的尾巴頸部上,是8128。它們具有一致的特性:尾數都是6或8,而且永遠是偶數。但在茫茫數海中,第五個完全數要大得多,居然藏在千萬位數的深處。
它是33550336,它的尋求之路也更加撲朔迷離,直到十五世紀才由一位無名氏給出。這一尋找完全數的努力從來沒有停止。電子計算機問世后,人們借助這一有力的工具繼續探索。笛卡爾曾公開預言:“能找出完全數是不會多的,好比人類一樣,要找一個完美人亦非易事。”時至今日,人們一直沒有發現有奇完全數的存在。于是是否存在奇完全數成為數論中的一大難題。只知道即便有,這個數也是非常之大,并且需要滿足一系列苛刻的條件。
完數
一個數如果恰好等于它的因子之和,這個數就稱為“"完數”。例如6=1+2+3(6的因子是1,2,3)。
例如:第一個完全數是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等等。
虧數對于“4”這個數,它的真約數有1、2,其和是3,比4本身小,像這樣的自然數叫做虧數。
盈數對于“12”這個數,它的真約數有1、2、3、4、6,其和是16,比12本身大,像這樣的自然數叫做盈數。所以,完全數就是既不盈余,也不虧欠的自然數。
性質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=13+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
推導公式大數學家歐拉曾推算出完全數的獲得公式:如果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.PASCAL程序,判斷A~B區域內的完全數為
program?wanquanshu;
var?i,a,b:longint;
function?wanquanshu(i:longint):boolean;
var?sum,k:longint;
begin
sum:=1;
for?k:=2?to?i?div?2?do
if?i?mod?k=0?then?sum:=sum+k;
if?i=sum?then?wanquanshu:=true
el?wanquanshu:=fal;
end;
begin
repeat
readln(a,b);
until(a>0)and(b>0)and(b>a);
for?i:=a?to?b?do
if?wanquanshu(i)then?writeln(i);
end。
2.利用FreeBasic編程求n以內完全數
DIM?AS?INTEGER?I,J,S
FOR?I=1?TO?10000
S=0
FOR?J=1?TO?I2
IF?I?MOD?J=0?THEN?S=S+J
NEXT?J
IF?S=I?THEN?PRINT?I,
NEXT?I
SLEEP
END
3.利用pascal編程求n以內完全數
program?bill02;
var?m,n,y,i,j,s,ss,z:longint;
a:array[1..10000]of?integer;
begin
readln(m,n);
for?i:=m?to?n?do
begin
z:=0;
fillchar(a,sizeof(a),0);
s:=2;
ss:=1;
y:=i;
while?y<>0?do
begin
if?y?mod?s=0?then
begin
ss:=ss+1;
a[ss]:=s;
y:=y?div?s;
end
el
s:=s+1;
end;
for?j:=1?to?ss?do
z:=z+a[j];
if?z=i?then?writeln(i);
end;
end。
4.利用VB編程求10000以內完全數
Dim?a?as?Integer,b?as?Integer,c?as?Integer
For?a=1?To?10000
c=0
For?b=1?To?a2
If?a?Mod?b=0?Then?c=c+b
Next?b
If?a=c?Then?Print?Str(a)
Next?a
5.利用C語言編程求1000以內完全數
#include“stdio.h”
void?main()
{
int?j,k,sum=0;
for(k=2;k<=1000;k++)
{
sum=0;
for(j=1;j<k;j++)
if(k%j==0)
sum=sum+j;
if(sum==k)
printf(“%d”,k);
}
}
6.利用java語言編程求1000以內完全數
public?class?PerfectNumber{
public?static?void?main(String[]args){
for(int?i=2;i<1000;i++){
int?sum=0;
//查找因數
for(int?j=1;j<i;j++){
if(i?%?j==0){
sum+=j;
}
if(sum==i)
System.out.println(i);
}
}
}
7.利用python語言編程求N以內完全數
def?perfect(N):
各個真約數的和等于它本身的自然數叫做完全數(Perfect?number),又稱完美數或完備數。
perfectNumber=[]
for?i?in?range(5,N):
sum1=0
for?j?in?range(1,i//2+1):
if?i%j==0:
sum1+=j
if?sum1==i:
perfectNumber.append(i)
return?perfectNumber
8.利用c++語言編程求1000以內完全數
#include?<iostream>
using?namespace?std;
int?main()
{int?i,j,m;
for(i=1;i<=1000;i++){
for(j=1,m=0;j<ij++){
while(i%j==0){
m=m+j;
break;
}
}
if(i==m){
cout<<i<<""<<"its?factors?are";
for(j=1;j<m;j++){
while(m%j==0){
cout<<j<<',';
break;
}
}
cout<<endl;
}
}
}
9.利用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;
}
10.c#/*完美數推算*/
int因子和=0;
foreach(var自然數in?Enumerable.Range(2,10000))
{
因子和=0;
foreach(var真約數in?Enumerable.Range(1,自然數-1))
if(自然數%真約數==0)因子和+=真約數;
if(因子和==自然數)
Console.WriteLine(自然數);
}
相關他們完美數Q1、到底有多少完全數?
A1、尋找完全數并不是容易的事。經過不少數學家研究,到2013年2月6日為止,一共找到了48個完全數。
Q2、有沒有奇完全數?
A2、奇怪的是,已發現的48個完全數都是偶數,會不會有奇完全數存在呢?如果存在,它必須大于10^300。至今無人能回答這些問題。盡管沒有發現奇完全數,但是當代數學家奧斯丁·歐爾證明,若有奇完全數,則其形式必然是12^p+1或36^p+9的形式,其中p是素數。在10^300以下的自然數中奇完全數是不存在的。
另外,如果存在奇完全數,則它們必能表示p^2*q的形式,除6外的偶完全數亦有此性質。
梅森素數古希臘數學家歐幾里得在名著《幾何原本》中證明了素數有無窮多個,并論述完全數時提出:如果2^P-1是素數(其中指數P也是素數),則2^(P-1)(2^P-1)是完全數。瑞士數學家和物理學家歐拉證明所有的偶完全數都有這種形式。因此,人們只要找到2^P-1型素數,就可以發現偶完全數了。數學界將2^P-1型素數稱為“梅森素數”(Mernne?prime),因為法國數學家和法蘭西科學院奠基人梅森在這方面的研究成果較為卓著。梅森素數貌似簡單,但探究難度卻極大。它不僅需要高深的理論和純熟的技巧,而且還需要進行艱巨的計算。到2013年2月6日為止,人類僅發現48個梅森素數。
值得提出的是:在梅森素數的基礎研究方面,法國數學家魯卡斯和美國數學家雷默都做出了重要貢獻;以他們命名的“魯卡斯-雷默方法”是目前已知的檢測梅森素數素性的最佳方法。此外,中國數學家和語言學家周海中給出了梅森素數分布的精確表達式,為人們尋找梅森素數提供了方便;這一研究成果被國際上命名為“周氏猜測”。
參考資料本文發布于:2023-06-01 14:46:34,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/92/185250.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:完數(特殊的自然數).doc
本文 PDF 下載地址:完數(特殊的自然數).pdf
| 留言與評論(共有 0 條評論) |