ハッピー数

ハッピー数（ハッピーすう、happy number）とは、自然数の各桁を1桁に分解して二乗和を取り、新しくできた数についても同じ処理を繰り返し行って、最終的に1となる数を指す。
例えば19に上の規則を適用すると、
となる。数列が1（の繰り返し）で終るため、19はハッピー数である。
ハッピー数の考え方が初めて示されたのは、1970年代のロシアと考えられている。
概要.
負でない整数の各桁の数字を分解し、2乗和を取る。この変換をハッピー関数という。できた新しい数で同じ変換を行う。こうしてできた数列をハッピー列と呼ぶ。ハッピー列が1となった場合、以後はずっと1が続く。ハッピー列が1で終る数がハッピー数である。ハッピー数は無数にあり、そのうち最小は1である。
500以下のハッピー数は次の通り:
ある数字がハッピー数なら、桁の順番を入れ替えた数もハッピー数となる。例えば19はハッピー数なので、91はハッピー数である。また、途中に0を挿入した数もハッピー数となる。例えば109や1090はハッピー数である。0を含む数を除き、桁の順番を入れ替えてできる最小の数のハッピー数だけを並べると、1000までは次のようになる。
10進数の場合、自然数がハッピー数である確率は1/7である。
ハッピー列.
ハッピー関数、ハッピー列のどちらも、ハッピー数以外に当てはめることもできる。
ハッピー列は、最終的に循環列となる。例えば4のハッピー列は、
となり、周期8の循環列を作る。5のハッピー列は、
となり、途中から周期8の循環列となる。ハッピー列は1か4に到達するため、ハッピー列に表れる循環列の周期は常に有限（1または8）である。
多次元のハッピー数.
ここまでは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つのハッピー素数が登場する。