當前位置:
首頁 > 最新 > 自製「最牛」素數幻方

自製「最牛」素數幻方

最近網上流傳一個據說是某個無聊的犯人在牢房裡搞出來的13x13的數字方陣,號稱是史上最牛幻方,就是下面這個:

這個方陣里有169個不相同的數,每行、每列以及兩個對角線的數字之和都相等,這不算什麼,但神奇的是,如果我們去掉周圍一圈方格,會得到一個11階的小方陣,它居然也是一個幻方。不斷去掉外圈,分別得到的9,7,5,3階方陣都是幻方,而且每一級幻方的每行數字之和都比小一圈的幻方的每行數字之和大10874。更奇的是,方陣里所有的數都是素數。

這個方陣看起來很強大,不過細細品味後,就會發現它其實沒有看起來那麼牛,做起來並不是很難,說不定咱還能做得更好呢。說干就干,下面就讓我們來山寨一個同樣的幻方吧,而且,咱要做一個15階的,比原版更牛。

第一步當然是學習,我們需要尋找原方陣的規律,不然都不知道怎麼開始。

前面說過,從中央的三階方陣起,每一級擴大,每行(列)和對角線的和都增加固定的10874,其實就是每行(列)增加了兩個素數而已。所以這個方陣的擴大過程實際上就是不斷把和為10874的不同素數對填到對稱的格子里。這就有門了:要先確定一個偶數,然後找出所有和值等於它的素數對。

對於不太大的偶數,找出所有滿足條件的素數還是比較容易的,尤其是在計算機的幫助下。比如很容易算出10874這個數共可表示為107對素數之和(5437自己和自己組成一對),這比13x13的方陣需要的85對素數多,但比15x15的方陣需要的113對少,因此我們的新方陣不可能在原來方陣的基礎上擴大了。

要做一個15階的素數方陣,我們需要找到至少可表示為113對素數之和的偶數,這可以通過編一個小程序來搜索,具體的程序就不介紹了。最小的滿足條件的偶數是9946,它正好可以表示為113對素數之和,共225個素數,就是下面這些。好了,就用它們來試試吧。

然後就要先做中央的三階方陣,這可以在最簡單的三階幻方的基礎上來構造。

如何把這個簡單方陣中的數都變成我們的素數呢?有兩種簡單的變換可以改變幻方中的數。一是把幻方中的每一個元素都乘上同一個數,這樣得到的仍然是一個幻方。第二種變換是:把幻方中的1,2,3作為一組,4,5,6作為一組,7,8,9作為一組,當我們給某個組的3個數都加上同一個數時,方陣的行列和仍然相等(只是對角線只能改變一條),而且三個組可以分別加上不同的數。利用這兩種變換,並注意兼顧兩條對角線,我們就有機會把1~9都變成我們準備好的素數。

在這兩種變換中,同一組裡的三個數始終保持等差關係,公差就是第一種變換中乘上的數。這提示我們需要找到三組素數,它們都是等差數列,並且公差相同。

顯然,最中間必須是4973,而4和6就用最接近4973的兩個數4943和5003來替換就可以了,這樣公差就是30。

下面需要在庫中尋找另外兩組公差也為30的數,這也可以讓程序來幫找,結果找到6組,其中兩組如下。

197 227 257

9689 9719 9749

注意這兩組素數是互補的——用9946減去一組裡的三個數就會得到另一組,只有互補的兩組才能保證生成的幻方的行(列)以及對角線之和恰好是4973的三倍。用上面兩組數分別替換掉方陣中的1,2,3和7,8,9,就完成了一個三階素數幻方。

下一步就是要擴大這個幻方了,我們先填對角線,這很簡單,隨便選兩對素數就可以了(為圖方便,我都是選最接近4973的兩對)。

現在需要解決剩下的兩行兩列了,還得靠程序幫忙,找出三個和值滿足要求的素數。我們題目的規模不大,暴力搜索就可以了。為節省時間,我總是搜出一個解就停止,後面的進展證明這完全沒有問題。行和列分別搜一次就OK,對稱位置上的數可以讓excel自動算出來。這樣一個五階的素數方陣就完成了。

繼續同樣的方法,逐步擴大方陣,到最後一級時會稍有難度,因為此時只剩下26對素數未被使用,容易出現無解的狀況(下圖中如果把左下角的4019換成4049就會無解)。

不過我還是很快找到了答案,最終的結果就是下面這個樣子。怎麼樣,比原版更漂亮吧?

作者:聽雨,文章來源:果殼網。本文版權歸原作者所有,轉載僅供學習使用,不用於任何商業用途,如有侵權請聯繫刪除,謝謝。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 數學中國 的精彩文章:

親和數的發現與研究
數學建模國賽賽場實戰經驗及技巧

TAG:數學中國 |