を小さい順に並べた素数とする。 以上の整数からなる長さ の有限列 ()を
で正の整数に符号化する。符号が である列を求め、成分を順に並べた組で答えよ。
素因数分解による列のゲーデル数
有限列 を ()で符号化し、逆に符号の素因数分解の指数から長さと各成分 を読み取れる(例: の符号は )。符号の指数を順にたどって、符号を使って定義された漸化式の値を求められる
前提
- 約数の個数と総和 (数学A 整数の性質)
この技能までの道筋(4 技能)
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
- 樹形図で数え上げる (算数 場合の数)
- 積の法則と和の法則 (算数 場合の数)
- 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
- 約数の個数と総和 (数学A 整数の性質)
説明
0 以上の整数の有限列 を、1 つの正の整数 に置き換える(符号化する)方法です。この数を列のゲーデル数(符号)といい、素因数分解の指数を見れば元の列を読み戻せます。数理論理学や計算理論で「列・式・計算の記録」を 1 つの自然数として扱うときや、過去の値すべてを使う漸化式を 1 つの数の漸化式に直すときに使います。
なぜそうしてよいのか
素数を小さい順に と番号づけます。列 に を対応させると、素因数分解の一意性により、 を見れば各 の指数 が一通りに決まります。だから異なる列は異なる符号をもち、符号から列を復元できます。
指数を ではなく にするのは、成分が 0 のときも素数 を必ず 1 個以上残すためです。もし指数を にすると、 と はどちらも になり、末尾の 0 の個数(列の長さ)が読めません。 にしておけば、符号に現れる素数はちょうど の 個で途中が抜けることもなく、相異なる素因数の個数がそのまま列の長さになります。空列の符号は空の積 です。
読み取りの記法として、符号 の長さ(相異なる素因数の個数)を 、 の指数から 1 を引いた値を と書きます。すると が列 の符号なら 、 です。たとえば の符号は で、 を素因数分解すれば逆に が読めます。
手順
符号化するときは、成分 に 1 を足した数を 番目の素数 ( から数える)の指数にして掛け合わせる:
読み取るときは、符号 を素因数分解し、素数を小さい順 に並べて指数を書き出す(現れない素数は指数 0)
現れる素数が の連続した 個であることを確かめ、長さ を読む(空列なら 、長さ 0)
各指数から 1 を引いて成分 を読む
符号を使って定義された漸化式では、手順 4 で読んだ成分を使って次の値を計算し、手順 1 で新しい符号を作る、を順にくり返す
例題
0 以上の整数の有限列 の符号を ( は小さい順の素数)と定める。符号が である列の長さ と、成分の和 を、組 の形で求めよ。
例題の解答
手順 2: を素因数分解する。
より 。
手順 3:現れる素数は の連続した 4 個なので、。
手順 4:指数 からそれぞれ 1 を引いて、列は 。(確認:。)
よって で、。
答え:
よくある誤り
指数をそのまま成分としてしまう誤り( を と読むなど)。正しくは指数から 1 を引いて
符号化で 1 を足し忘れ、 の符号を としてしまう誤り。正しくは 。1 を足さないと成分 0 の素数が消えて長さが読めなくなる
素数の番号を 1 から数え、 を の指数にしてしまう誤り。正しくは で、 は
長さを素因数の指数の合計で数えてしまう誤り( の長さを とするなど)。正しくは相異なる素因数の個数で
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
入口の問題
この技能を使う問題
自然数全体を ( を含む)とし、 を 番目の素数とする()。有限列 のゲーデル数を
で定める(空列のゲーデル数は とする)。関数 を
で定め、その累積値関数(course-of-values function) を
で定める。自然数 の正の約数の個数を求めよ。定数記号 、1 項関数記号 、2 項関数記号 からなる一階の言語の項(変数を含まない閉項)を考える。項は次の規則で作られるものだけとする。
- は項である。
- が項ならば は項である。
- が項ならば は項である。各項 のゲーデル数 (正の整数)を、項の構成に関する帰納法で次のように定める。
ゲーデル数が 以下である項の個数を求めよ(異なる項は異なる記号列として区別する)。自然数は を含むものとし、 とする。 で 番目の素数を表す()。 と に対し、 を「 となる最大の 」と定め、 とする。
長さ の有限列 のゲーデル数を
と定める(空列のゲーデル数は )。関数 を、 がある有限列 のゲーデル数であるとき 、そうでないとき と定める。が原始再帰関数であることを証明せよ。
ただし、次の事実は用いてよい。
- , , ( なら 、そうでなければ )、、 は原始再帰関数であり、述語 と は原始再帰的である。
- 原始再帰関数・原始再帰的述語の全体は、合成、原始再帰、論理結合子 、有界量化 , ( は原始再帰関数の値)で閉じている。また、述語 が原始再帰的であることは、その特性関数 ( が成り立てば 、そうでなければ )が原始再帰関数であることと定義する。
- 素因数分解の一意性。この問題では自然数 は を含むものとする。 を小さい順に並べた素数とする( は 番目から数えて 番目の素数)。
正の整数 と に対し、 を素因数分解したときの の指数を とする( が を割り切らなければ )。さらに
と定める。例えば のとき なので である。関数 を、正の整数 に対して
で定める(右辺の 2 つの項はどちらも上で定めた の値の和であり、 を再帰的に使うものではない)。さらに関数 を
で定める。例えば である。このとき、 を素因数分解したときの素数 の指数 を求めよ。
この技能の次に学べること
- 累積再帰 (大学院数学 数理論理学・集合論)