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

1.6 卡普雷卡數

相傳在我國近鄰印度,某鐵路線上的一塊寫著3025(km)的里程碑被雷擊而一分為二:30,25。某天,數學家卡普雷卡(Kaprekar)路過那里,他發現3025這個數因雷擊而突顯“個性”,即有3025=(30+25)2

此后,卡普雷卡專門收集這種神奇的“怪數”。現稱這樣具有“分2段和的平方”特性的整數為卡普雷卡數。

【問題】 在4位整數中尋求與(30+25)2=3025類似的卡普雷卡數。

【探求】 保留低2位為25,探求4位數。

設x是2位整數,則

(x+25)2=x100+25

整理并分解,有

(x-30)(x-20)=0

因而得x=30,x=20,即在4位整數中除了3025之外,卡普雷卡數還有2025,即(20+25)2=2025。

【拓展】 從4位拓展到偶數位。

探索偶數n位卡普雷卡數:偶數n位整數分為前后兩個n/2位整數,該數等于所分兩個數和的平方。

輸入偶數n(4≤n≤14),輸出所有n位卡普雷卡數。

1. 設計要點

注意到位數n可能超過10位,相關變量設置為雙精度實型。

(1)設置枚舉循環。

設n位平方數a=b?b,求出b的最小值c與最大值d。

為縮減循環次數,設置b(c~d)循環,循環中a=b?b即為n位平方數。

(2)實施分段。

設置分段特征量w=10n/2,對平方數a應用取整x=floor(a/w)與求余y=fmod(a,w),計算a分段的前后兩個n/2位整數x,y。

(3)分段和判別。

如果后一段首位為零,則導致整數y不足n/2位,為此需加上條件y>=w/10。

若滿足條件b=x+y且y>=w/10,即找到n位卡普雷卡數a,進行打印輸出。

2. 程序設計
3. 程序運行示例與說明

以上所得4個14位卡普雷卡數所分的前后兩段都是7位整數。

如果分段和條件檢測中省略y>=w/10,則出現87841600588225=(8784160+588225)^2,顯然這一增解所分第2段的首位是0,造成兩段位數之和不等于n位。

當n=6時,只有唯一一個6位卡普雷卡數:494209=(494+209)^2。

當n=8時,有60481729=(6048+1729)^2等4個8位卡普雷卡數。

對于位數n為奇數,或分解為多段,或冪指數為大于2的整數,是否存在類似卡普雷卡數,將在第3章中探討。

主站蜘蛛池模板: 信丰县| 合阳县| 孟州市| 平凉市| 莒南县| 南康市| 全南县| 游戏| 本溪市| 南康市| 鹤壁市| 泗水县| 双峰县| 宝山区| 铁岭县| 西乌珠穆沁旗| 东台市| 武陟县| 嘉鱼县| 土默特右旗| 黄浦区| 通州区| 遂川县| 新源县| 花莲市| 九寨沟县| 那曲县| 财经| 武定县| 盐源县| 凌云县| 岗巴县| 宝兴县| 义乌市| 三河市| 东乡族自治县| 谷城县| 南召县| 莎车县| 内丘县| 墨竹工卡县|