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

1.7 雅趣守形數(shù)

本節(jié)探討守形數(shù),其特性表現(xiàn)在其平方數(shù)的尾部。

定義:若正整數(shù)n是它平方數(shù)的尾部,則稱n為守形數(shù),又稱同構(gòu)數(shù)。

例如,6是其平方數(shù)36的尾部,25是其平方數(shù)625的尾部,6與25都是守形數(shù)。

首先利用守形數(shù)的特性簡單求解3位守形數(shù),在此基礎(chǔ)上編程拓展求指定區(qū)間內(nèi)的守形數(shù),并進一步探求多位守形數(shù)。

1.7.1 探索區(qū)間守形數(shù)

先求解一個簡單的守形數(shù)問題。

【問題】 共有多少個3位守形數(shù)?

【思考】 從個位開始向高位逐位探求。

(1)除了5與6外,1能否構(gòu)成守形數(shù)的尾部?

回答是否定的。事實上,12=1,1是1的平方,而不是其平方數(shù)的尾部。

設(shè)2位整數(shù)a=10k+1(即a的十位數(shù)字是k>0),只要證a2的十位數(shù)字不為k即可。

a2=(10k+1)2=10(10k2+2k)+1

可見,a2的十位數(shù)字是2k的個位數(shù)字,無論k>0為何數(shù)字,2k的個位數(shù)字都不可能為數(shù)字k。

(2)任意n位守形數(shù)必為n-1位守形數(shù)。

要求3位守形數(shù),可先求出所有2位守形數(shù)。

①設(shè)a=10k+5為個位數(shù)字為5,十位數(shù)字為k(k>0)的2位整數(shù),則

a2=(10k+5)2=100(k2+k)+25

顯然a2的最低2位為25,其十位數(shù)字為2。

即要使a為守形數(shù),只有k=2,即a=25這一個解。

②設(shè)a=10k+6為個位數(shù)字為6,十位數(shù)字為k(k>0)的2位整數(shù),則

a2=(10k+6)2=100(k2+k)+10(2k+3)+6

顯然a2的十位數(shù)字為(2k+3)的個位數(shù)字,即(2k+3)%10。

由(2k+3)%10=k,推得有k=7,即a=76這一個解。

(3)在2位守形數(shù)基礎(chǔ)上配置首位。

①設(shè)a=100k+25,即低2位為守形數(shù)25,百位數(shù)字為k(k>0)的3位整數(shù),則

a2=(100k+25)2=1000(10k2+5k)+625

顯然a2的最低3位為625,其百位數(shù)字為6。

即a為個位數(shù)字是5的3位守形數(shù),百位數(shù)字k=6,即a=625這一個解。

②設(shè)a=100k+76為低2位為守形數(shù)76,百位數(shù)字為k(k>0)的3位整數(shù),則

a2=(100k+76)2=1000(10k2+15k+5)+100(2k+7)+76

顯然a2的百位數(shù)字為(2k+7)的個位數(shù)字,即(2k+7)%10。

由(2k+7)%10=k,推得有k=3,即a=376這一個解。

(4)綜合以上可知共兩個3位守形數(shù):

3762=141 376

6252=390 625

依此可求出4位、5位守形數(shù)。

【拓展】 試探求指定區(qū)間[x,y]內(nèi)所有守形數(shù)。

(1)設(shè)計要點。

為了擴大探求范圍,變量類型設(shè)置為double型。

對指定范圍[x,y]內(nèi)的每一個整數(shù)a(約定a>1),求出其平方數(shù)s;計算a的位數(shù)k,同時計算b=10^k,a的平方s的尾部c=fmod(s,b);比較整數(shù)a與其平方數(shù)的尾部c,若a=c則輸出守形數(shù)。

(2)程序設(shè)計。

(3)程序運行示例與說明。

以上結(jié)果可見,沒有5結(jié)尾的4位守形數(shù),也沒有6結(jié)尾的5位守形數(shù),實際上是因為其最高位為0而沒有顯示。

由輸出的第2個解與第4個解比較可知,0625即為5結(jié)尾的4位守形數(shù),因其高位為0,自然不輸出。

同樣,由輸出的第3個解與第5個解比較可知,09376即為6結(jié)尾的5位守形數(shù),因其高位為0而沒有輸出。

1.7.2 展現(xiàn)多位守形數(shù)

以上設(shè)計搜索到2個3位守形數(shù)、1個4位守形數(shù)、1個5位守形數(shù)、2個6位守形數(shù)。守形數(shù)的個位數(shù)字為5或6。

試探索一般n位守形數(shù)。

1. 設(shè)計要點

為了求更多位數(shù)的守形數(shù),可應(yīng)用守形數(shù)的性質(zhì):

一個m位守形數(shù)的尾部k(1≤k≤m-1)位數(shù)也是一個高位可能為0的守形數(shù)。

事實上,a是一個m位數(shù),a的平方數(shù)的尾部k位僅由a的尾部k位決定,而與a的其他位無關(guān)。

實施易知一位守形數(shù)有5,6,則二位守形數(shù)的個位數(shù)字只可能是5,6這兩個數(shù)字。根據(jù)這一思路,我們可應(yīng)用遞推求解。

設(shè)置數(shù)組a[k]存儲守形數(shù)的第k位:守形數(shù)的個位數(shù)字a[1]選取d(5~6),a[k](k>1)選取j(0~9)。同時,設(shè)置b數(shù)組存儲計算平方的中間值,設(shè)置c數(shù)組存儲計算守形數(shù)的平方值,應(yīng)用“豎式乘模擬”計算平方數(shù)。

通過比較若有a[i]=c[i](i=1,2,…,k)成立,則k位守形數(shù)確立,繼續(xù)遞推下一位,直至n位確定并打印輸出。

2. 程序設(shè)計
3. 程序運行示例與變通

注意到以上結(jié)果中“5結(jié)尾的守形數(shù)”中沒有4位守形數(shù),“6結(jié)尾的守形數(shù)”中沒有5,12,13與20位守形數(shù),只是其最高位為0而已(由其高一位結(jié)果可看出)。

變通:試把守形數(shù)的尾數(shù)從5,6擴展到0~9,即改變尾數(shù)d循環(huán),由for(d=5;d<=6;d++)變?yōu)閒or(d=0;d<=9;d++)。變通后運行程序,可知除5,6結(jié)尾外,其他數(shù)字結(jié)尾沒有守形數(shù)。

主站蜘蛛池模板: 韶山市| 彰武县| 什邡市| 克拉玛依市| 伊吾县| 枣庄市| 西昌市| 宣武区| 宁都县| 婺源县| 怀集县| 石嘴山市| 沙雅县| 张掖市| 贡觉县| 元谋县| 栖霞市| 广河县| 大姚县| 南阳市| 闽侯县| 宁化县| 阿克陶县| 沧州市| 佛教| 哈巴河县| 康保县| 莎车县| 噶尔县| 紫金县| 修水县| 馆陶县| 抚远县| 温泉县| 汪清县| 得荣县| 通榆县| 青铜峡市| 邹平县| 金塔县| 连江县|