焦華,謝朝東
(1.貴州商學院,貴陽 550014;2.貴州民族大學,貴陽 550025)
從“水仙花數”到哥德巴赫猜想
——編程的尋根和延伸
焦華1,謝朝東2
(1.貴州商學院,貴陽 550014;2.貴州民族大學,貴陽 550025)
從尋找“水仙花數”的編程到驗證哥德巴赫猜想的編程,其重心是編程的思考方法,強調知識節點的尋根與拓展,重視由點到面地把握問題的全貌。對基礎編程的教學有一定的實用價值,對編程思維的訓練有一定的啟示。
水仙花數;哥德巴赫猜想;C/C#程序;思維方式
尋找“水仙花數”在很多編程語言教科書上都會提到,因為其中包含有基礎編程強調的選擇結構與循環結構,是一個較典型的程序范例,具體內容如下:
問題:尋找并打印出所有的“水仙花數”。所謂“水仙花數”是指一個3位數,它的各位數字立方和等于該數自身。例如:153就是一個“水仙花數”,因為153=13+ 53+33。[1]
解法一:利用for循環對100-999之間的所有自然數進行檢驗,檢驗的方法用if語句,若判斷是“水仙花數”就輸出打印,否則就不作為。這里每個數要分解出它的個位、十位、百位。C#程序源代碼如下:



圖1
因此“水仙花數”有4個:153、370、371、407。
解法二:思路與解法一相類似,區別在分解出個位、十位、百位的過程。


給出兩種解法后,問題已經圓滿解決。但學習者通常會有一個疑問:這樣的三位數為什么稱為“水仙花數”?莫非與水仙花的形狀有關?水仙花有六個花瓣、三個花蕊、二層花瓣等,和這些有關聯嗎?

圖2
所有的C/C#程序設計教科書不提這問題,但尋根問底是探索知識的途徑!查詢資料得到結果整理如下:
“水仙花數”來源于英文“narcissistic number”,英語單詞narcissistic是“自我陶醉,自賞的,自戀的”的意思。在古希臘神話中,那喀索斯(narcissus)是河神刻斐索斯與水澤女神利里俄珀之子。他是一個長相非常清秀的美少年,卻只愛慕自己的水中倒影,對任何姑娘都不動心。最終在顧影自憐中抑郁死去。他死后化作水仙花,依然停留在水邊守望著自己的影子。后來Narcissus就變成為“孤芳自賞者”、“自我陶醉者”的代名詞。所以“水仙花數”也稱為“自戀數”、“自冪數”。
上面是尋根思維的結果,之后是延伸拓展的思考,還有其他解法嗎?有三位的“自冪數”,還有更高位的“自冪數”嗎?前面的兩種解法是將三位數作個位、十位、百位的分解,現在反過來,個位、十位、百位是由0、1…9組成的,由它們組合得到三位數。于是得到下面的解法。

進一步延伸拓展,“水仙花數”是三位的“自冪數”,還有其他位的“自冪數”嗎?
根據數學定義:自冪數是指一個很特別的n位數,它的每個位上的數字的n次冪之和等于它自身。(例如:當n=3時,有153=13+53+33,153即是n=3時的一個自冪數。同理當n=4時,有1634=14+64+34+44,從而1634即是n=4時的一個自冪數。)
自冪數包括:“獨身數”、“水仙花數”、“四葉玫瑰數”、“五角星數”、“六合數”、“北斗七星數”、“八仙數”、“九九重陽數”、“十全十美數”。它們是根據位數來劃分的,“水仙花數”只是自冪數中的一種。下面列表加以說明:

表1
更高位的自冪數編程搜索方法與“水仙花數”的三種解法相類似,但分解出的位數會更多或嵌套的層數會更多,現在提出一個問題:最大的自冪數是多少?計算機數系是有限的,編程害怕無窮大“∞”,在此不再討論。以下再分析一個特色程序:
問題:驗證任意大于2的偶數可分解為兩個素數之和并輸出這兩個素數。
C語言源程序代碼如下:[4]



圖3
程序注釋部分提到C語言的語法:函數定義、函數調用、函數聲明;程序找到了每一偶數的所有可能的素數分解。但人們是怎么發現這個重要結論的?
問題尋根:這是世界三大數學猜想之一的哥德巴赫猜想。三大猜想是指費爾馬猜想、四色猜想及哥德巴赫猜想。費爾馬猜想經過人類350年的努力于1994年由英國數學家安德魯·懷爾斯證明,遂后稱為費爾馬大定理;四色猜想經過人類124年的努力于1976年由美國數學家阿佩爾與哈肯借助計算機證明,遂后稱為四色定理;哥德巴赫猜想經過人類275年的努力至今尚未解決,目前最好的成果于1966年由中國數學家陳景潤取得(陳氏定理)。這三個問題的共同點就是題面簡單易懂但內涵卻深邃無比,影響了一代又一代的數學家。
延伸拓展:歐拉版本的哥德巴赫猜想是:任一大于2的偶數都可寫成兩個素數之和。
我們從4=2+2、6=3+3、8=3+5、10=3+7=5+5、……、100=3+97=11+89=17+83=29+71==41+59=47+53、……這些具體的分解中,可以得到哥德巴赫猜想是成立的。甚至有人逐一驗證了3300萬以內的所有偶數,竟然沒有一個不符合哥德巴赫猜想的。進入20世紀、21世紀,隨著計算機技術的高速發展,數學家們發現哥德巴赫猜想對于更大的數仍然成立。但是自然數是無限的,誰也不知道會不會在某一個足夠大的偶數上,突然出現哥德巴赫猜想的反例呢?275年過去了,哥德巴赫猜想至今尚未解決,數學家們把它比喻為“數學王冠上的明珠”……三大猜想都涉及到無窮大“∞”問題,難怪數學家稱無窮大“∞”是個魔鬼!
編程的尋根和延伸就像從一棵樹的枝節出發,找到主干、找到根、找到分枝、找到樹葉……相當于遍歷一棵樹,遍歷的方式可以不同。因為只有遍歷才能認識一棵根深葉茂的參天大樹!從而避免“盲人模象”那種“以點代面、以偏概全”的錯誤!在思維方式上應是線性思維(形式邏輯)與非線性思維(辯證邏輯)的結合。
[1]譚浩強.C程序設計(第四版)[M].清華大學出版社,2010.
[2]陳強.C#編程新手自學手冊[M].機械工業出版社,2012.
[3]周洪安.21天學通C#[M].電子工業出版社,2009.
[4]梅創社.C語言程序設計[M].北京理工大學出版社,2010.
From Narcissistic Number to the Goldbach Guess,Seek Roots and Extension of Programm ing
JIAO Hua1,XIE Chao-dong2
(1.Guizhou University of Commerce,Guiyang 550014;2.Guizhou University for nationalities,Guiyang 550025)
From the search for narcissistic number programming to verify Goldbach guess programming,the focus is the thinkingmethod of program-ming,emphasizes seek roots and extension of knowledge node,pays attention to grasp the whole picture of the problem from the point to the surface.Ithas some practical value to the teaching of basic programming,and has some enlightenment to the training of programming thinking.
Narcissistic Number;Goldbach Guess;C/C#Program;Thinking Mode
1007-1423(2017)12-0011-04
10.3969/j.issn.1007-1423.2017.12.003
焦華(1964-),男,貴州貴陽人,碩士研究生,副教授,研究方向為算法與程序
2017-02-28
2017-04-20
貴州省教育廳2016年本科教學工程項目(No.121)
謝朝東(1963-),男,貴州畢節人,碩士研究生,教授,研究方向為偏微分方程