- 趣味數(shù)學(xué)及編程拓展
- 楊克昌
- 1309字
- 2019-07-30 18:00:19
2.8 素集“烏蘭現(xiàn)象”
美國數(shù)學(xué)家烏蘭教授(S.Ulam)在一次參加科學(xué)報(bào)告會(huì)時(shí),為了消磨時(shí)間,在一張紙上把1,2,3,…,100按逆時(shí)針的方式排成一種方形螺旋線,并標(biāo)出了其中的全部素?cái)?shù)。
他突然發(fā)現(xiàn)這些素?cái)?shù)大都扎堆于一些斜線上。散會(huì)后,他在計(jì)算機(jī)上把1~65 000的整數(shù)排成逆時(shí)針方螺旋并打印出來。他發(fā)現(xiàn)這些素?cái)?shù)仍然具有擠成一條直線的特性,這種現(xiàn)象在數(shù)學(xué)上稱為“烏蘭現(xiàn)象”。
后來,數(shù)學(xué)家們從“烏蘭現(xiàn)象”中找到了素?cái)?shù)的許多有趣性質(zhì)。
2.8.1 方螺線中的素集線
設(shè)計(jì)程序,把整數(shù)序列1,2,3,4,…,n×n排列成n圈的方螺線數(shù)陣,1置放在中心位置,以后各整數(shù)依次按逆時(shí)針方螺線位置排列。
為清楚顯示,方螺線上的素?cái)?shù)用括號(hào)標(biāo)注。
1. 設(shè)計(jì)要點(diǎn)
對(duì)于指定方陣的階數(shù)n,設(shè)置i循環(huán)(i=1,2,3,…,n×n),在循環(huán)中應(yīng)用試商判別法判別整數(shù)i是否為素?cái)?shù),并用p數(shù)組元素標(biāo)注素?cái)?shù):p[i]=1,i為素?cái)?shù);否則p[i]=0。
數(shù)字方螺線是從正中間開始的。隨整數(shù)m的逐步增加,位置呈逆時(shí)針方螺線展開。給方螺線的各位置確定m的值是設(shè)計(jì)的關(guān)鍵所在。
為此,建立存儲(chǔ)整數(shù)m的坐標(biāo)值的2維數(shù)組a[x][y]。
對(duì)于輸入的整數(shù)n,計(jì)算d=n/2,d為n階方螺線的圈數(shù)。方螺線的正中位置存儲(chǔ)1,即a[d][d]=1,中心位置不屬于任何圈。
在第i(1~d)圈的四周分為右邊、上邊、左邊與下邊,相應(yīng)分4步分別在條件循環(huán)中實(shí)施賦值操作。
(1)右邊向上增長(zhǎng),x不變y遞增1,整數(shù)m遞增1,a[x][y]=m;直至y=d+i轉(zhuǎn)向。
while(y<d+i){m++;y++;a[x][y]=m;}
(2)上邊向左增長(zhǎng),y不變x遞減1,整數(shù)m遞增1,a[x][y]=m;直至x=d-i轉(zhuǎn)向。
while(x>d-i) {m++;x--;a[x][y]=m;}
(3)左邊向下增長(zhǎng),x不變y遞減1,整數(shù)m遞增1,a[x][y]=m;直至y=d-i轉(zhuǎn)向。
while(y>d-i){m++;y--;a[x][y]=m;}
(4)下邊向右增長(zhǎng),y不變x遞增1,整數(shù)m遞增1,a[x][y]=m;直至x=d+i轉(zhuǎn)向。
while(x<d+i){m++;x++;a[x][y]=m;}
每一圈4邊賦值完成后,通過x++;y=d-i;過渡至下一圈的起點(diǎn)。
在二重循環(huán)中輸出a數(shù)組元素,即打印出方螺線方陣。
顯示輸出時(shí),利用p數(shù)組識(shí)別素?cái)?shù),同時(shí)用括號(hào)把素?cái)?shù)括起來,以區(qū)別于其他整數(shù)。
2. 烏蘭現(xiàn)象程序設(shè)計(jì)

3. 程序運(yùn)行示例與說明
構(gòu)建n階方陣,請(qǐng)確定n:13 13階方螺線方陣:(見圖2-2)

圖2-2 素?cái)?shù)1+2線的烏蘭現(xiàn)象圖
可以清楚地看到圖2-2中素?cái)?shù)沿斜線(圖中只畫出其中兩條斜線)扎堆的烏蘭現(xiàn)象。
這些“素集線”上除了大多數(shù)為素?cái)?shù)1外,其他非素?cái)?shù)如39,15、33、93,85,65等大多為兩個(gè)素?cái)?shù)之積,即陳景潤研究哥德巴赫猜想所得1+2中的2,是比較“接近素?cái)?shù)”的整數(shù)。
同時(shí),從圖2-2中還可看到另一有趣的現(xiàn)象:奇數(shù)的平方數(shù)1,9,25,49,81等在下部半條斜線上,而偶數(shù)的平方數(shù)4,16,36,64,100等則在上部半條斜線上。
2.8.2 回旋層疊另版烏蘭

圖2-3 坐標(biāo)系移動(dòng)漫步示意圖
回旋層疊方陣是另一個(gè)生動(dòng)體現(xiàn)素?cái)?shù)沿斜線扎堆的有趣方陣,而且更為簡(jiǎn)單,可以說是另版烏蘭。
回旋層疊方陣在坐標(biāo)系第一象限(包括x軸與y軸)按以下規(guī)律展開:它從原點(diǎn)(0,0)運(yùn)動(dòng)到(0,1),然后按圖2-3中箭頭所示方向展開,即
原點(diǎn)(0,0)→(0,1)→(1,1)→(1,0)→(2,0)→(2,1)→(2,2)→(1,2)→(0,2)…
行進(jìn)路線上的每一個(gè)點(diǎn)有一個(gè)整數(shù)m,坐標(biāo)原點(diǎn)的m=0,以后每一步m遞增1。
試構(gòu)建n階回旋層疊方陣,用括號(hào)標(biāo)注方陣整數(shù)m中的素?cái)?shù)。
1. n階回旋層疊方陣設(shè)計(jì)要點(diǎn)
對(duì)于指定方陣的階數(shù)n,同樣應(yīng)用試商判別整數(shù)i(1~d=(n+1)×(n+1))是否為素?cái)?shù),并用p數(shù)組元素標(biāo)注素?cái)?shù):p[i]=1,i為素?cái)?shù);否則p[i]=0,i為非素?cái)?shù)。
為敘述方便,把方陣分成n層,并稱x=k或y=k的這一“層”為第k(1~n)層,該層的“折點(diǎn)”坐標(biāo)為(k,k)。折點(diǎn)把每一層分為水平段與垂直段。
同時(shí),第k(1~n)層的兩段的先后次序與k的奇偶有關(guān)。
奇數(shù)層:先水平段從左至右遞增到“折點(diǎn)”,再垂直段從上至下遞增到x軸(y=0)。
偶數(shù)層:先垂直段從下至上遞增到“折點(diǎn)”,再水平段從右至左遞增到y(tǒng)軸(x=0)。
設(shè)置i(1~n)循環(huán),對(duì)第i層的兩段中各點(diǎn)分別賦值。
(1)若i%2>0,即在奇數(shù)層。
首先,通過y++過渡到奇數(shù)層。
奇數(shù)層是先水平向右;過折點(diǎn)后再垂直向下。
在水平段,y坐標(biāo)為i不變,x坐標(biāo)與m遞增1;直至x=i即到折點(diǎn)為止。
while(x<i){x++;m++;a[x][y]=m;}
在垂直段,x坐標(biāo)為i不變,y坐標(biāo)遞減1,m遞增1;直至y=0即到x軸為止。
while(y>0){y--;m++;a[x][y]=m;}
(2)若i%2=0,即在偶數(shù)層。
首先,通過x++過渡到偶數(shù)層。
偶數(shù)層是先垂直向上;過折點(diǎn)后再水平向左。
在垂直段,x坐標(biāo)為i不變,y坐標(biāo)與m遞增1;直至y=i即到折點(diǎn)為止。
while(y<i){y++;m++;a[x][y]=m;}
在水平段,y坐標(biāo)為i不變,x坐標(biāo)遞減1,m遞增1;直至x=0即到y(tǒng)軸為止。
while(x>0){x--;m++;a[x][y]=m;}
同樣,在二重循環(huán)中輸出a數(shù)組元素,即打印出回旋層疊方陣。
顯示輸出時(shí),利用p數(shù)組識(shí)別素?cái)?shù),用括號(hào)把素?cái)?shù)括起來,以區(qū)別于其他整數(shù)。
2. 程序設(shè)計(jì)

3. 程序運(yùn)行示例與說明
請(qǐng)輸入方陣階數(shù)n(n<100):12
輸出的回旋層疊方陣的1+2線圖如圖2-4所示。

圖2-4 回旋層疊方陣的1+2線圖
從以上輸出可以清楚地看到另版“烏蘭現(xiàn)象”:圖2-4中素?cái)?shù)沿斜線扎堆(圖中只畫出其中兩條),這些“素集線”,除了一部分為素?cái)?shù)1之外,其他非素?cái)?shù)如57、91,77,25、35等大多為兩個(gè)素?cái)?shù)之積,即比較“接近素?cái)?shù)”的2。
從圖2-4中還可看到另一個(gè)有趣的現(xiàn)象:所有偶數(shù)也聚集于它們的斜線之上,真可謂“涇渭分明”。
同時(shí),奇數(shù)的平方數(shù)1,9,25,49,81等均相間于縱向坐標(biāo)軸上,而偶數(shù)的平方數(shù)4,16,36,64等則相間于橫向坐標(biāo)軸上。
4. 富素斜線探索
考察圖2-4中的3—5—13—19…這一素集斜線,開頭10個(gè)點(diǎn)中8個(gè)是素?cái)?shù)。另兩個(gè)不是素?cái)?shù)的兩個(gè)點(diǎn)為57=3×19,91=7×13,也是比較“接近素?cái)?shù)”的2。
同時(shí),這一素集線的斜率為正,即斜線呈現(xiàn)遞增態(tài)勢(shì),比方螺線分別向兩頭遞增更為形象直觀。
把這一素集線上的數(shù)表示成第m行的函數(shù)f(m),歸納得到:
f(m)=m2+m+1(當(dāng)m為奇數(shù)時(shí))
f(m)=m2+m-1(當(dāng)m為偶數(shù)時(shí))
應(yīng)用以上公式,可以非常方便地探求這一素集線上的1+2分布,有興趣的讀者可自行設(shè)計(jì)程序探索,此處從略。
- 數(shù)學(xué)星球:人類文明與數(shù)學(xué)(萬物皆數(shù)學(xué))
- 感官的盛宴:數(shù)學(xué)之眼看藝術(shù)(萬物皆數(shù)學(xué))
- 仿真模型可移植性規(guī)范及其應(yīng)用
- Hands-On Blockchain Development in 7 Days
- 數(shù)學(xué)可以很有趣:科學(xué)新悅讀文叢(套裝全5冊(cè))
- 圖解博弈論
- ANSYS 18.0有限元分析基礎(chǔ)與實(shí)例教程
- Blockchain Quick Reference
- 我的第一本趣味數(shù)學(xué)書2
- ANSYS 12.0有限元分析完全手冊(cè)
- Blockchain for Decision Makers
- CAE分析大系:ANSYS疑難問題實(shí)例詳解
- 2頁紙圖解數(shù)學(xué):以極聰明的方式,讓你三步讀懂?dāng)?shù)學(xué)
- 模糊數(shù)學(xué)基礎(chǔ)及應(yīng)用
- 迷人的數(shù)學(xué)+美麗的數(shù)學(xué)(共2冊(cè))