快樂數

<image>

快樂數（happy number）有以下的特性：在給定的進位制下，該數字所有數字平方和（數位的平方和），得到的新數再次求所有數位的平方和，如此重複進行，最終結果必為1。

以十進位為例：

28 → 22 + 82 = 68

→ 62 + 82 = 100

→ 12 + 02 + 02 = 1

37 → 32 + 72 = 58

→ 52 + 82 = 89

→ 82 + 92 = 145

→ 12 + 42 + 52 = 42

→ 42 + 22 = 20

→ 22 + 02 = 4

→ 42 = 16

→ 12 + 62 = 37

因此28是快樂數，而在37的計算過程中，數字會重複出現，繼續計算的結果只會是上述數字的循環（不快樂數循環），不會出現1，因此37不是快樂數。

不是快樂數的數稱為不快樂數（unhappy number），所有不快樂數的數位平方和計算，最後都會進入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循環中。

在十進位下，100以內的快樂數有：1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100，共20個。

## 十進位下的快樂數

### 表格

以下是小於100的快樂數表格，綠色數字表示它是快樂數，紅色數字表示它是不快樂數循環。

00｜01｜02｜03｜04｜05｜06｜07｜08｜09

10｜11｜12｜13｜14｜15｜16｜17｜18｜19

20｜21｜22｜23｜24｜25｜26｜27｜28｜29

30｜31｜32｜33｜34｜35｜36｜37｜38｜39

40｜41｜42｜43｜44｜45｜46｜47｜48｜49

50｜51｜52｜53｜54｜55｜56｜57｜58｜59

60｜61｜62｜63｜64｜65｜66｜67｜68｜69

70｜71｜72｜73｜74｜75｜76｜77｜78｜79

80｜81｜82｜83｜84｜85｜86｜87｜88｜89

90｜91｜92｜93｜94｜95｜96｜97｜98｜99

以下是100到小於200的快樂數表格，綠色數字表示它是快樂數，紅色數字表示它是不快樂數循環。

100｜101｜102｜103｜104｜105｜106｜107｜108｜109

110｜111｜112｜113｜114｜115｜116｜117｜118｜119

120｜121｜122｜123｜124｜125｜126｜127｜128｜129

130｜131｜132｜133｜134｜135｜136｜137｜138｜139

140｜141｜142｜143｜144｜145｜146｜147｜148｜149

150｜151｜152｜153｜154｜155｜156｜157｜158｜159

160｜161｜162｜163｜164｜165｜166｜167｜168｜169

170｜171｜172｜173｜174｜175｜176｜177｜178｜179

180｜181｜182｜183｜184｜185｜186｜187｜188｜189

190｜191｜192｜193｜194｜195｜196｜197｜198｜199

以下是200到小於300的快樂數表格，綠色數字表示它是快樂數。

200｜201｜202｜203｜204｜205｜206｜207｜208｜209

210｜211｜212｜213｜214｜215｜216｜217｜218｜219

220｜221｜222｜223｜224｜225｜226｜227｜228｜229

230｜231｜232｜233｜234｜235｜236｜237｜238｜239

240｜241｜242｜243｜244｜245｜246｜247｜248｜249

250｜251｜252｜253｜254｜255｜256｜257｜258｜259

260｜261｜262｜263｜264｜265｜266｜267｜268｜269

270｜271｜272｜273｜274｜275｜276｜277｜278｜279

280｜281｜282｜283｜284｜285｜286｜287｜288｜289

290｜291｜292｜293｜294｜295｜296｜297｜298｜299

300以內的快樂數沒有其中一位是5，300以內的數其中有一位是5，它一定不是快樂數。

以下是300到小於400的快樂數表格，綠色數字表示它是快樂數。

300｜301｜302｜303｜304｜305｜306｜307｜308｜309

310｜311｜312｜313｜314｜315｜316｜317｜318｜319

320｜321｜322｜323｜324｜325｜326｜327｜328｜329

330｜331｜332｜333｜334｜335｜336｜337｜338｜339

340｜341｜342｜343｜344｜345｜346｜347｜348｜349

350｜351｜352｜353｜354｜355｜356｜357｜358｜359

360｜361｜362｜363｜364｜365｜366｜367｜368｜369

370｜371｜372｜373｜374｜375｜376｜377｜378｜379

380｜381｜382｜383｜384｜385｜386｜387｜388｜389

390｜391｜392｜393｜394｜395｜396｜397｜398｜399

發現10*10、100*100等表格的快樂數表格有線對稱。

### 因數

以下是300以內的快樂數因數。

快樂數｜因數｜因數個數｜奇偶數｜數字和

1｜1｜1｜奇數｜1

7｜1、7｜2｜奇數｜7

10｜1、2、5、10｜4｜偶數｜1

13｜1、13｜2｜奇數｜4

19｜1、19｜2｜奇數｜10

23｜1、23｜2｜奇數｜5

28｜1、2、4、7、14、28｜6｜偶數｜10

31｜1、31｜2｜奇數｜4

32｜1、2、4、8、16、32｜6｜偶數｜5

44｜1、2、4、11、22、44｜6｜偶數｜8

49｜1、7、49｜3｜奇數｜13

68｜1、2、4、17、34、68｜6｜偶數｜14

70｜1、2、5、7、10、14、35、70｜8｜偶數｜7

79｜1、79｜2｜奇數｜16

82｜1、2、41、82｜4｜偶數｜10

86｜1、2、43、86｜4｜偶數｜14

91｜1、7、13、91｜4｜奇數｜10

94｜1、2、47、94｜4｜偶數｜13

97｜1、97｜2｜奇數｜16

100｜1、2、4、5、10、20、25、50、100｜9｜偶數｜1

103｜1、103｜2｜奇數｜4

109｜1、109｜2｜奇數｜10

129｜1、3、43、129｜4｜奇數｜12

130｜1、2、5、10、13、26、65、130｜8｜偶數｜4

133｜1、7、19、133｜4｜奇數｜7

139｜1、139｜2｜奇數｜13

167｜1、167｜2｜奇數｜14

176｜1、2、4、8、11、16、22、44、88、176｜10｜偶數｜14

188｜1、2、4、47、94、188｜6｜偶數｜17

190｜1、2、5、10、19、38、95、190｜8｜偶數｜10

192｜1、2、3、4、6、8、12、16、24、32、48、64、96、192｜14｜偶數｜12

193｜1、193｜2｜奇數｜13

203｜1、7、29、203｜4｜奇數｜5

208｜1、2、4、8、13、16、26、52、104、208｜10｜偶數｜10

219｜1、3、73、219｜4｜奇數｜12

226｜1、2、113、226｜4｜偶數｜10

230｜1、2、5、10、23、46、115、230｜8｜偶數｜5

236｜1、2、4、59、118、236｜6｜偶數｜11

239｜1、239｜2｜奇數｜14

262｜1、2、131、262｜4｜偶數｜10

263｜1、263｜2｜奇數｜11

280｜1、2、4、5、7、8、10、14、20、28、35、40、56、70、140、280｜16｜偶數｜10

291｜1、3、97、291｜4｜奇數｜12

293｜1、293｜2｜奇數｜14

由表格可知：

- 128以內快樂數沒有因數3、6、9等數，如果128以內的數是3的倍數等，它一定不是快樂數。
- 1000以內快樂數沒有因數9、15、18、21等數，如果1000以內的數是9的倍數等，它一定不是快樂數。
- 1000以內快樂數同樣也沒有能被25整除但不能被100整除，即尾數是（25、50或75的數），如果1000以內的數是25的倍數但不是100的倍數，它一定不是快樂數。
- 1000以內的快樂數有143個，只有7個是3的倍數，129、192、219、291、888、912、921，機率:5%。
- 1000以內的快樂數有143個，有其中一位是5的只有12個，356、365、536、556、563、565、566、635、653、655、656、665，機率:8%。
- 1000以內的快樂數有143個，只有3個是25的倍數，100、700、1000，機率:2%。

### 快樂質數

300以內的快樂質數有：7, 13, 19, 23, 31, 79, 97, 103, 109, 139, 167, 193, 239, 263, 293，共15個。

### 連續快樂數

最小的連續快樂數的一對是31和32，較小的前10項是31、129、192、262、301、319、367、391、565、622，較大的前10項則是32、130、193、263、302、320、368、392、566、623。最小的連續3個快樂數是1880開始，4個連續快樂數是7839，5個是44488。

### 快樂完全數

已知的51個完全數，只有3個是快樂數：28、496、8128。

## 其他進制的快樂數

- 三進制：1, 3, 9, 13, 17, 23, 25, 27, 31, 35, 37, 39, 47, 51, 53, 59, 61, 65, 69, 71, 73, 75, 77, 79, 81, 85, 89, 91, 93
- 五進制：1, 5, 7, 11, 19, 23, 25, 27, 33, 35, 41, 43, 49, 51, 55, 79, 81, 83, 91, 93, 95, 99
- 任何進制（最小快樂數且大於1）：2, 3, 2, 5, 6, 7, 8, 3, 7, 11, 12, 13, 14, 15, 2, 17, 2, 5, 2, 21, 22, 23, 24, 5, 26, 27, 28, 3, 2, 31, 32, 33, 3, 35, 6, 31, 38, 39, 40, 13, 42, 43, 44, 45, 46, 47, 48, 7, 50, 51, 52, 31, 54, 53, 56, 57, 58, 59, 54, 61, 62, 63, 8, 65, 66, 67, 12, 69, 70, 71, 72

## 其他進位的不快樂數循環

- 2進位
- 每個數都是快樂數
- 3進位
- 2 → 11 → 2
- 在十進位中為2 → 4 → 2
- 4進位
- 每個數都是快樂數
- 5進位
- 4 → 31 →20 → 4
- 在十進位中為4 → 16 → 10 → 4
- 23 → 23
- 在十進位中為13 → 13
- 6進位
- 5 → 41 → 25 → 45 → 105 → 42 → 32 → 21 → 5
- 在十進位中為5 → 25 → 17 → 29 → 41 → 26 → 20 → 13 → 5
- 7進位
- 2 → 4 → 22 → 11 → 2
- 在十進位中為2 → 4 → 16 → 8 → 2
- 34 → 34
- 在十進位中為25 → 25
- 8進位
- 4 → 20 → 4
- 在十進位中為4 → 16 → 4
- 5 → 31 → 12 → 5
- 在十進位中為5 → 25 → 10 → 5
- 32 → 15 → 32
- 在十進位中為26 → 13 → 26
- 9進位
- 58 → 108 → 72 → 58
- 在十進位中為53 → 89 → 65 → 53
- 55 → 55
- 在十進位中為50 → 50
- 10進位
- 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4
- 11進位
- 75 → 68 → 91 → 75
- 在十進位中為82 → 74 → 100 → 82
- 23 → 12 → 5 → 23
- 在十進位中為25 → 13 → 5 → 25
- 12進位
- 22 → 8 → 54 → 35 → 2A → 88 → A8 → 118 → 56 → 51 → 22
- 在十進位中為26 → 8 → 64 → 41 → 34 → 104 → 128 → 164 → 66 → 61 → 26
- 21 → 5 → 21
- 在十進位中為25 → 5 → 25
- 13進位
- 79 → A0 → 79
- 在十進位中為100 → 130 → 100
- 36 → 36
- 在十進位中為45 → 45
- B2 → 98 → B2
- 在十進位中為145 → 125 → 145
- 67 → 67
- 在十進位中為85 → 85
- 14 → 14
- 在十進位中為17 → 17
- 16進位
- D → A9 → B5 → 92 → 55 → 32 → D
- 在十進位中為13 → 169 → 181 → 146 → 85 → 50 → 13

## 其他性質

- 快樂數加入數字0或交換的數也是快樂數，不快樂數的情況也是。例如：49是快樂數，94、4900也是快樂數；123不是快樂數，321、10203、123000也不是快樂數
- 通過檢查十進位中前一百萬個快樂數，它們的自然密度似乎約為0.15。十進位快樂數也許沒有漸近密度。快樂數的自然密度上限大於0.18577，下限小於0.1138。
- 十進位不快樂數的循環只有一個，是 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4。

## Python程式碼

```python
#ishappy number

def ishappy(n):
    a = []
    while n not in a:
        a.append(n)
        n = sum([int(x) **2 for x in str(n)])
        
    return 'happy' if n == 1 else 'unhappy'
```

## 外部連結

- Happy number calculator - 可以線上判斷數字是否為快樂數〔英文〕