論質數
大家知道質數是一類很奇特的數字,除了“1”和它本身之外沒有別的約數。說“1”是某個自然數的約數沒有什麼意義,因為“1”可以是任何自然數的約數。如果排除了“1”做為約數的約定,質數可以說成是“隻有它本身可約的數”,或者“僅能被自身整除的數”。對於一個數“m”,判斷它是否為質數,就得考察“m”能否被“2”到“m-1”中的數整除,如果全部都不能整除則說明“m”是質數,這樣一個一個地判斷下去會得到一個質數的集合“P”。
在自然數中,從“2”開始,保留“2”,去掉所有“2”的倍數,再查看下一個數(“3”)並保留之,去掉這個數的所有倍數……如此進行循環。用這種古老的篩法將會得到可稱之為篩數的集合“Q”。
大家知道,用上麵兩種方法得到的質數集P和篩數集Q是相同的。然而這種相同是“想當然”的。有沒有一個自然數“p”存在於質數集P之中而不存在於篩數集Q之中?或者,有沒有一個自然數“q”存在於篩數集Q之中而不存在於質數集P之中?這種懷疑是可以理解的,因為P和Q是不同方法得到的兩種數集。
在自然數中質數為何如此特殊?可以用篩法得到?
我們可以從“2”開始進行篩數,為什麼不可以從“3”開始進行?或者從“4”……“n”開始進行這樣的篩數?
受這個想法的指導,我編寫了如下VB程序:
PrivateSubCommand1_click()
Consth=100
Constt=2
DimD(h)AsInteger
ForI=tToh
D(I)=0
NextI
Open"D:Q.dat"ForOutputAs3
ForI=tToh
IfD(I)=0Then
Write#3,I
ForJ=ITohStepI
D(J)=1
NextJ
EndIf
NextI
Close(3)
EndSub
隻要改變程序中t的值,運行程序會得到不同的篩數集:
t=2時得到Q(1)——從“2”開始進行篩選所得到的篩數集。
t=3時得到Q(2)——從“3”開始進行篩選所得到的篩數集。
t=4時得到Q(3)——從“4”開始進行篩選所得到的篩數集。
……
t=n+1時得到Q(n)——從“n+1”開始進行篩選所得到的篩數集。
……
這裏我隻進行了100以內有限自然數的篩選,但也可以說明問題——人們認為很奇特的質數不過是一類普通的篩數(從“2”開始進行篩選,篩數Q(1)即質數)。
Q(1):2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。
Q(2):3,4,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。
Q(3):4,5,6,7,9,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。
Q(4):5,6,7,8,9,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。
Q(5):6,7,8,9,10,11,13,15,17,19,23,25,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。
……
篩數集Q(n)總是在n^2之後與所謂的質數集相重合,或者說篩數Q(n)與質數總是在大於n^2處相交。這一點不難證明,按縱橫坐標寫下這些數字,要去掉的數總在n^2之外才相同。
構造出這樣的篩數集之後可以看到質數在自然數中沒有什麼特殊之處,隻要改變“篩孔”(從何處開始進行篩選)我們就可以得到相應“特殊的”篩數集Q(n)。自然數是無窮的,這樣的篩數集也將是無窮的,而不管n有多大,大於n^2的那些Q(n)的無窮多元素都與質數的這一部分相重合。
人們看到數集Q(1)以為它很特殊,不過是因為它站在隊伍的最前麵而已。可是它後麵那一群無窮多的數集個個都很特殊——隨便找一個,比如Q(2),隻要你多看一會兒。
2012年8月17日論質數