合理的なふるい

Integer factorization algorithm

数学において有理数体ふるいは整数を素因数に分解する一般的なアルゴリズムです。これは一般数体ふるいの特殊なケースです。一般アルゴリズムよりも効率は劣りますが、概念的にはより単純です。これは、一般数体ふるいの仕組みを理解するための有用な第一歩となります。

方法

合成数 nを因数分解しようとするとしよう。境界値Bを選び因数基数(これをPと呼ぶ)を特定する。これはB以下のすべての素数の集合である。次に、 zz + nがB -滑らかであるような正の整数zを探す。つまり、それらの素因数はすべてPに含まれる。したがって、適切な指数a ib iについて、次のように書ける

z = p i P p i a i and z + n = p i P p i b i . {\displaystyle z=\prod _{p_{i}\in P}p_{i}^{a_{i}}\qquad {\text{and}}\qquad z+n=\prod _{p_{i}\in P}p_{i}^{b_{i}}.}

しかし、zとnはnを法として合同であり、したがって、私たちが見つけた整数zのそれぞれは、 Pの要素間の乗法関係(mod n )を生み出します。つまり、 z + n {\displaystyle z+n}

p i P p i a i p i P p i b i ( mod n ) {\displaystyle \prod _{p_{i}\in P}p_{i}^{a_{i}}\equiv \prod _{p_{i}\in P}p_{i}^{b_{i}}{\pmod {n}}}

(ここで、aib i非負の整数です。)

これらの関係を十分に生成したら(一般に、関係の数はPのサイズより少し多くなれば十分です)、線形代数の方法を使用して、素数の指数がすべて偶数になるようにこれらのさまざまな関係を掛け合わせることができます。これにより、a 2b 2 (mod n )の形式の平方の合同が得られ、これはn = gcd( a + b , n ) × gcd( ab , n )の因数分解に変換できます。この因数分解は自明である(つまり、 n = n × 1 )と判明する可能性があり、その場合は関係の異なる組み合わせで再試行する必要がありますが、運が良ければnの因数の非自明なペアが得られ、アルゴリズムは終了します。

有理ふるいを用いて整数n = 187 を因数分解します。任意の値B = 7を試し、因数分解の底P = {2,3,5,7}を得ます。最初のステップは、n がPの各要素で割り切れるかどうかをテストすることです。明らかに、n がこれらの素数のいずれかで割り切れる場合は、これで完了です。しかし、187 は 2、3、5、7 では割り切れません。次に、zの適切な値を探します。最初のいくつかは 2、5、9、56 です。これら 4 つのzの適切な値から、4 つの乗法関係式(mod 187)が得られます。

これらを組み合わせて偶数指数を得るには、本質的に異なる方法がいくつかあります。例えば、

  • ( 1 )×( 4 ): これらを掛け合わせ、7の共通因数を消去すると(7はPの元数であり、 nと互いに素であることが既に判明しているので[1] )、 2 4 ≡ 3 8 (mod n )となる。結果として得られる因数分解は187 = gcd(3 4 + 2 2 , 187) × gcd(3 4 − 2 2 , 187) = 11 × 17となる

あるいは、式()はすでに適切な形になっている。

  • ( 3 ): これは3 2 ≡ 14 2 (mod n )を意味し、因数分解は187 = gcd(14 + 3, 187) × gcd(14 − 3, 187) = 11 × 17となります。

アルゴリズムの限界

一般数体ふるいと同様に、有理ふるいはp mpは素数、mは整数)の形の数を因数分解することができません。しかし、これは大きな問題ではありません。そのような数は統計的に稀であり、さらに、与えられた数がこの形であるかどうかを確認する簡単で高速な方法があります。おそらく最もエレガントな方法は、任意の1 < b ≤ log 2 ( n )に対してn 1/ bb = nが成り立つかどうかを、ニュートン法の整数版を用いて確認することです[2]

最大の問題は、 zz + nの両方B滑らかになるような十分な数のzを見つけることです。任意のBに対して、 B滑らかな数の割合は数の大きさとともに急速に減少します。そのため、nが大きい場合(例えば100桁)、アルゴリズムが機能するのに十分な数のzを見つけることは困難、あるいは不可能になります。一般数体ふるいの利点は、ここで要求されているn次の滑らかな数ではなく、exp( C (log( n )) 2/3 (log(log( n ))) 1/3 )の滑らかな数(C > 0 )を検索するだけで済むことです。[3]

参考文献

  • AK Lenstra, HW Lenstra, Jr., MS Manasse, JM Pollard, The Factorization of the Ninth Fermat Number, Math. Comp. 61 (1993), 319-349. [2] から入手可能。
  • AK Lenstra、HW Lenstra、Jr.(編)数体ふるいの開発、数学講義ノート1554、Springer-Verlag、ニューヨーク、1993年。

脚注

  1. ^ 一般に共通因数は合同式で相殺することはできませんが、この場合は相殺することができます。これは、前述のように、因数底の素数はすべてn互いに素である必要があるためです。モジュラー逆数を参照してください。
  2. ^ R. CrandallとJ. Papadopoulos、「AKSクラスの素数判定の実装について」 [1]から入手可能
  3. ^ AK Lenstra, HW Lenstra, Jr., MS Manasse, JM Pollard, The Factorization of the Ninth Fermat Number, Math. Comp. 61 (1993), p. 328
Retrieved from "https://en.wikipedia.org/w/index.php?title=Rational_sieve&oldid=1279832433"