ハッピー数

ハッピー数（ハッピーすう、happy number）とは、自然数の各桁を1桁に分解して二乗和を取り、新しくできた数についても同じ処理を繰り返し行って、最終的に1となる数を指す。

例えば19に上の規則を適用すると、
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
12 = 1 ...
となる。数列が1（の繰り返し）で終るため、19はハッピー数である。

ハッピー数の考え方が初めて示されたのは、1970年代のロシアと考えられている。

概要
負でない整数の各桁の数字を分解し、2乗和を取る。この変換をハッピー関数という。できた新しい数で同じ変換を行う。こうしてできた数列をハッピー列と呼ぶ。ハッピー列が1となった場合、以後はずっと1が続く。ハッピー列が1で終る数がハッピー数である。ハッピー数は無数にあり、そのうち最小は1である。

500以下のハッピー数は次の通り:
1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100, 103, 109, 129, 130, 133, 139, 167, 176, 188, 190, 192, 193, 203, 208, 219, 226, 230, 236, 239, 262, 263, 280, 291, 293, 301, 302, 310, 313, 319, 320, 326, 329, 331, 338, 356, 362, 365, 367, 368, 376, 379, 383, 386, 391, 392, 397, 404, 409, 440, 446, 464, 469, 478, 487, 490, 496 .

ある数字がハッピー数なら、桁の順番を入れ替えた数もハッピー数となる。例えば19はハッピー数なので、91はハッピー数である。また、途中に0を挿入した数もハッピー数となる。例えば109や1090はハッピー数である。0を含む数を除き、桁の順番を入れ替えてできる最小の数のハッピー数だけを並べると、1000までは次のようになる。

1, 7, 13, 19, 23, 28, 44, 49, 68, 79, 129, 133, 139, 167, 188, 226, 236, 239, 338, 356, 367, 368, 379, 446, 469, 478, 556, 566, 888, 899.

10進数の場合、自然数がハッピー数である確率は1/7である。

ハッピー列
ハッピー関数、ハッピー列のどちらも、ハッピー数以外に当てはめることもできる。

ハッピー列は、最終的に循環列となる。例えば4のハッピー列は、
4, 16, 37, 58, 89, 145, 42, 20, 4, ...
となり、周期8の循環列を作る。5のハッピー列は、
5, 25, 29, 85, 89, 145, 42, 20, 4, 16, 37, 58, 89, ...
となり、途中から周期8の循環列となる。ハッピー列は1か4に到達するため、ハッピー列に表れる循環列の周期は常に有限（1または8）である。

特殊なハッピー数
 連続するハッピー数で最小の数は 1, 31, 1880, 7839,…である。() 
44488から44492までは、5連続でハッピー数である。
任意の数だけ連続するハッピー数・アンハッピー数が存在する。
ハッピー数の内、500以下で素数でもあるものは次の通り。ハッピー素数（happy prime）とも呼ばれる。
7, 13, 19, 23, 31, 79, 97, 103, 109, 139, 167, 193, 239, 263, 293, 313, 331, 367, 379, 383, 397, 409, 487()
10150006 + 7426247 + 1 はハッピー素数であり、回文素数 でもある。
ハッピー素数が無数にあるかは分かっていない。2010年時点で知られている最も大きなハッピー素数は、である。

多次元のハッピー数
ここまでは2乗和について説明したが、n次元についても論じることができる。引数xを処理するハッピー関数を

で表すと、最初の19の例では

と表すことができる。

ハッピー数は、本来は最終的に1となる数のみを指すが、「最終的に周期1のハッピー列となるもの」と定義すれば、ハッピー列の終わりは、2次元では0と1の2種、3次元では0, 1, 153, 370, 371, 407の3種、4次元では0, 1, 8208の4種である。周期1のハッピー列に現れる終わりの数字の種類は、各次元で有限個である。

コンピュータプログラムの例
ある数がハッピー数であるかどうかを調べるには、コンピュータを使うのが便利である。Pythonを使ったプログラムの例は次の通り。
SQUARE = dict([(c, int(c) ** 2) for c in "0123456789"])
def is_happy(n):
  s = set()
  while (n > 1) and (n not in s):
    s.add(n)
    n = sum(SQUARE[d] for d in str(n))
  return n == 1

数学以外での登場 
イギリスのSFテレビドラマ『ドクター・フー』新シリーズのシーズン3第7話『42』で、太陽に衝突しようとする宇宙船のドアを開けるキーワードとして (313, 331, 367, 379) の4つのハッピー素数が登場する。

参考文献

関連文献・外部リンク
Walter Schneider, Mathews: Happy Numbers.

Happy Numbers at The Math Forum.

 Reg Allenby page

関連項目
幸運数

数学パズル
数学に関する記事
整数の類