N = 15 を分解したいとします。N と互いに素な数 a を選び、関数 f(x) = ax mod N を眺めると、値は必ず循環します。たとえば a = 7 なら 7, 4, 13, 1, 7, 4, 13, 1, … と周期 r = 4。この r さえ分かれば、あとは最大公約数(gcd)の計算だけで因数が転がり出てきます。下のデモで a を変えて、周期と因数の出方を確かめてください。
f(x) = a^x mod 15 の周期 → 因数への変換(ステップ実行)
点の色は「周期の中の位置(x mod r)」。同じ色が等間隔に並ぶ=周期的。緑の破線は値 1 — ここに戻ってくるまでの長さが周期 r。下段の計算は「次のステップ」で1行ずつ進みます。どの a でも最後は 15 = 3 × 5 に辿り着くことを確認してください。
ステージ②の色は f(x) の値(7x mod 15 ∈ {1, 7, 4, 13})。③の測定で f の値が1つランダムに選ばれ(リセットごとに変わります)、その色の x だけが生き残って間隔4の櫛になる。④の QFT で櫛は k = 0, 8, 16, 24 のピークに化ける — 間隔 Q/r = 8 から r = 4 が読める。
POINT — 「並列計算だから速い」のではない
②の時点で f(0)〜f(31) は確かに全部同時に計算されている。だが測定すればランダムな1つが出るだけで、これでは古典と変わらない。ショアの本質は、欲しい情報が個々の値ではなく「間隔 r」という全体のパターンである点。③でどの f 値が選ばれても櫛の間隔は必ず r で、④の QFT(干渉)がその間隔だけを取り出す。選ばれた f の値(=櫛の開始位置)は QFT 後の振幅の大きさに影響しない。
4. QFT = 周波数を読む装置
QFT は音声信号処理の章で学んだフーリエ変換の、確率振幅版そのものです。時間領域の周期的なパルス列がスペクトル上で等間隔のピークになる — あの対応が振幅の世界でもそのまま成り立ちます。周期 r の櫛に QFT をかけると、ピークは Q/r の倍数の位置に立ちます。スライダーで櫛の周期と開始位置を変えて確かめてください。