コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「ハッピー数」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
ハッピー数: リンクを追加
タグ: モバイル編集 モバイルアプリ編集 Androidアプリ編集
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
58行目: 58行目:
==コンピュータプログラムの例==
==コンピュータプログラムの例==
ある数がハッピー数であるかどうかを調べるには、コンピュータを使うのが便利である。[[Python]]を使ったプログラムの例は次の通り<ref>[http://rosettacode.org/wiki/Happy_Number Happy Number] Rosetta Code</ref>。
ある数がハッピー数であるかどうかを調べるには、コンピュータを使うのが便利である。[[Python]]を使ったプログラムの例は次の通り<ref>[http://rosettacode.org/wiki/Happy_Number Happy Number] Rosetta Code</ref>。
<source lang=python>
<syntaxhighlight lang=python>
SQUARE = dict([(c, int(c) ** 2) for c in "0123456789"])
SQUARE = dict([(c, int(c) ** 2) for c in "0123456789"])
def is_happy(n):
def is_happy(n):
66行目: 66行目:
n = sum(SQUARE[d] for d in str(n))
n = sum(SQUARE[d] for d in str(n))
return n == 1
return n == 1
</syntaxhighlight>
</source>


== 数学以外での登場 ==
== 数学以外での登場 ==

2020年7月5日 (日) 23:05時点における版

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

例えば19に上の規則を適用すると、

12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
12 = 1 ...

となる。数列が1(の繰り返し)で終るため、19はハッピー数である。

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

概要

負でない整数の各桁の数字を分解し、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 [2].

ある数字がハッピー数なら、桁の順番を入れ替えた数もハッピー数となる。例えば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[3].

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

ハッピー列

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

ハッピー列は、最終的に循環列となる。例えば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)である[4]

特殊なハッピー数

  • 連続するハッピー数で最小の数は 1, 31, 1880, 7839,…である。(オンライン整数列大辞典の数列 A055629)
    • 44488から44492までは、5連続でハッピー数である[5]
    • 任意の数だけ連続するハッピー数・アンハッピー数が存在する[6]
  • ハッピー数の内、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[7].

  • 10150006 + 7426247×1075000 + 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のハッピー列に現れる終わりの数字の種類は、各次元で有限個である[4]

コンピュータプログラムの例

ある数がハッピー数であるかどうかを調べるには、コンピュータを使うのが便利である。Pythonを使ったプログラムの例は次の通り[8]

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つのハッピー素数が登場する。

参考文献

  1. ^ a b R. W. Barnard On Applications of Special Functions to Disparate Fields J. Analysis Volume 18 (2010), 9–2
  2. ^ オンライン整数列大辞典の数列 A007770
  3. ^ オンライン整数列大辞典の数列 A124095
  4. ^ a b 岡本茂 ハピー数について、千葉敬愛短期大学紀要 22, 17-20, 2000-02
  5. ^ Robert Styer Smallest examples of strings of consecutive happy numbers, 2000 Mathematics Subject Classification
  6. ^ E. El-Sedy and S. Siksek, On happy numbers, Rocky Mountain J. Math., 30(2000), 565-570.
  7. ^ オンライン整数列大辞典の数列 A035497
  8. ^ Happy Number Rosetta Code

関連文献・外部リンク

  • Walter Schneider, Mathews: Happy Numbers.
  • Weisstein, Eric W. "Happy Number". mathworld.wolfram.com (英語).
  • Happy Numbers at The Math Forum.

関連項目