官术网_书友最值得收藏!

1.1 水仙花與蘭德爾數

蘭德爾(Randle)數又稱自方冪數,是一類涉及自身數字特點的整數。

本節從探求最簡單的3位水仙花數開始,進而編程探索一般n(3~8)位蘭德爾數。

1.1.1 水仙花數

一個3位整數如果等于它的3個數字的立方和,那么該3位數稱為水仙花數。

【問題】 有多少個水仙花數?試探求水仙花數。

【思考】 從最小數字開始,逐個數字實驗探求。

設水仙花數為abc(a為百位數字,b為十位數字,c為個位數字),滿足

100a+10b+c=a3+b3+c3 (a,b,c為整數,1≤a≤9,0≤b≤9,0≤c≤9)

這是一個3元3次不定方程,因涉及3個立方項,簡單處理并不現實,擬采用逐位實驗探求。

由水仙花數的定義可知,它的3個數字中至少有一個數字在5以上,否則其3個數字的立方和不足3位。

先列出一個數字x的立方x3(見表1-1)以備調用。

表1-1 一個數字x的立方

1. 試取最小數字為0

由表1-1可知,第2個數字的立方不含數字0,即第2個數字必須大于0。

(1)第2個數試取1,第3個數字為x,x3+1的結果中須含數字0,1與x,顯然x不存在。

(2)第2個數試取2,23=8,第3個數字為x,x3+8的結果中須含數字0,2與x。試取x=8,512+8=620,含數字0,2,但不含數字8,也不符合要求。

(3)第2個數試取3,33=27,第3個數字為x,x3+27的結果中須含數字0,3與x。試取x=7,343+27=370,含有數字0,3與7,因而得到第1個解370。繼續第3個數字取x=8,9,不滿足要求。

(4)第2個數試取4,43=64,第3個數字為x,x3+64的結果中須含數字0,4與x。試取x=7,343+64=407,含數字0,4與7,因而得到第2個解407。繼續第3個數字x=8,9,不滿足要求。

(5)第2個數試取5,6,…,無滿足要求的3位整數。

2. 試取最小數字為1

由表1-1可知,第2個數字必須大于1。

(1)第2個數試取2,23=8,選第3個數字為x,x3+9的結果中須含數字1,2與x。試取x=8,512+9=521,含數字1,2,但不含數字8,不符合要求。

(2)第2個數試取3,33=27,第3個數字為x,x3+28的結果中須含數字1,3與x。試取x=5,125+28=153,含數字1,3與5,因而得到第3個解153。繼續試取x=6,216+28=244,不符合要求。繼續試取x=7,343+28=371,含數字1,3與7,因而得到第4個解371。

(3)第2個數試取4,5,6,…,無滿足要求的3位整數。

以此類推,試驗最小數字為2,3,…,無滿足要求的3位數。

綜合以上實驗探求,得到4個水仙花數:370,407,153,371。

以上探求水仙花數的方法就是數學實驗,由小到大選擇各數字逐位試驗、調整,探求滿足不定方程的解。

順便指出,數學實驗是一種非常重要的數學方法,可培養與加強探索能力的提升。

1.1.2 蘭德爾數

蘭德爾數:一個n(n≥3)位正整數如果等于它的n個數字的n次冪之和,那么該數稱為n位蘭德爾數,又稱自方冪數。

當n=3時稱為水仙花數,當n=4時稱為四葉玫瑰花數,當n=5時稱為五角星數,當n=6時稱為六合數,當n=7時稱為北斗七星數,當n=8時稱為八仙數,等等。

試編程搜索n(3≤n≤8)位蘭德爾數。

1. 探求設計要點

為求n次冪方便,相關變量設置為double型。

(1)循環枚舉與分離數字。

建立n(3~8)循環枚舉位數。

計算最小的n位整數t后,建立y(t+1~10?t-1)循環枚舉n位整數。

應用求余函數fmod(y,10)與取整函數floor(y/10)分離整數y的n個數字k。

(2)求和與檢測。

數字k的n次冪即為pow(k,n);通過s+=pow(k,n);求得n個數字的n次冪之和s。

通過y==s即可檢測y是否為n位蘭德爾數。

通過檢測后即可輸出n位蘭德爾數,并用變量m統計其個數。

2. 蘭德爾數程序設計
3. 程序運行示例與變通

前面應用逐位試驗的數學實驗探求3位水仙花數并不簡捷,當n≥4時,因涉及構成數字的n次方,用同樣的推理探求n位蘭德爾數并不現實。

以上程序快捷地求出了6種蘭德爾數,說明了編程探索與拓展的優越性,進一步說明在趣味數學發展與深入的進程中,程序設計手段不可或缺。

變通:可把以上枚舉循環語句for(n=3;n<=8,n++)改變為從鍵盤輸入整數n語句,即可探求某一個n(n≥9)位正整數的n位蘭德爾數。

當n≥9時,程序搜索n位蘭德爾數的時間隨n的增加變得越來越長。

主站蜘蛛池模板: 东辽县| 玉环县| 东阳市| 大丰市| 哈密市| 仪陇县| 陈巴尔虎旗| 太白县| 乌什县| 大关县| 古浪县| 安多县| 临清市| 扎兰屯市| 西安市| 平谷区| 和龙市| 天津市| 黑龙江省| 苍梧县| 马公市| 赣榆县| 奉新县| 德昌县| 藁城市| 磴口县| 苗栗县| 丁青县| 政和县| 西乌珠穆沁旗| 昭通市| 松溪县| 峨山| 黄冈市| 峨山| 平定县| 保定市| 思南县| 竹溪县| 潮安县| 渭南市|