コンピューターによる素因数分解
ふるい
( s i e v e )
系のアルゴリズムス
攻 一
専 コ 育 ) 教 学 域 数 領 ( 享・系
科 然 上 教 自 村はじめに
初等整数論の基本定理に基づき,長年にわたり 素因数分解法が研究され実践されてきた.この分 野の研究は,コンビューターによる演算能力の発 達に伴い, 1970年代より盛んに研究が進められ てきた.その以前でも理論は確立されていたが,
従来の計算法は物理的な限界を持っていたので,
実際に大きな自然数の素因数分解を示すことは困 難を極めていた.今ある素因数分解法の発展は,
古くからの理論の積み重ねと,最新の演算処理技 術によって支えられている.そして,その発展の 根幹には,現在の研究に至るまでに考案されてき た様々な方法があることを忘れてはならない.
素因数分解法の発展には大きく分けて2つの流 れがある.ひとつは『群論系』の流れで,その名 のとおり群論的手法が利用されている.ここでは 詳しく取り上げないが,既約剰余群を利用したp
‑ 1法や,近年研究の可能性が注目されている楕 円曲線法などが,この代表的な方法としてあげら れる.この楕円曲線法は, RSA暗号と並んで暗号 理論の分野でも応用されている.
もう一方の流れは『ふるい
( s i e v e )
系』と呼ば れるもので,フェルマ一法から発展していったも のであるといえる.フェルマ一法とは, Lehman が1974年に提案した方法で,中学校で扱う初歩 的な因数分解を利用したものである.一見単純だ が極めて効果的な素因数分解法であるといえるだ ろう.このフェルマー法に様々なアイデアを盛り 込むことによって,従来の試行割算法より効率的 な方法が次々と提案された.ここでは後者のふるい系について取り上げ,古 典的な方法から比較的新しい複数多項式2次ふる い法まで、を流れを追って示すこととする.また,
現在最高速のアルゴ、リズムである一般数体ふるい 法,そしてLehman予想の仮説を用いない世界初 のアノレゴリズムであるA K S判定法, この分野の 最先端である2つの理論についても紹介する.
指導教員
丸 林 英 俊
1
初等整数論からの準備本論文で活用する初等整数論の基本的用語およ び定理を述べている.
。定義(素数) 自然数nに対して, :t 1と土n 以外の約数を真の約数という.真の約数をもっn を合成数といい n*lかっ真の約数をもたない nを素数という.つまり,正の約数が3個以上な ら合成数 2個ならば素数というわけで、ある. 1 個しかない 1は特別扱いして,合成数とも素数と
も考えない.
定理(素因数分解と分解の一意性)
合成数nは素数の積に分解される.また,その 分解の仕方は素数のJI慎序を除いては一意的である.
定 理1.1 5 (ブエノレマーの小理) 素数pと整数aに対しては
①aP三 a (mod p)
②(a, p)=1 斗 a(p‑l)三 1 (mod p) が成り立つ.
2 古典的素数判定方法 試行割算法
試行割算法とは
r
nが自然数かつ合成数であ れ ば nはF nより大きくない素因数pをもってし1るJという定理を用いている.小さい素数から 順にわっていき nを割り切る素因数を見つける という最も素朴な方法である.極めて小さい素因 数を見つけるのに有効な方法である.
エラトステネスのふるい
( E r a t o s t h e n e s 'S i e v e )
素数の研究には,あらかじめ素数を調べておき,
それらを表にした素数表を作っておくと便利であ る.素数か否か,また特定範囲の素数の分布も調 べることができる.たいへん素朴な方法であるが,
いまでも素数表を効率よく作るには,この方法し かないようだ¥
‑ 400‑
3
確率的素数判定法
素数判定法の中には,与えられた自然数nを
「合成数であるJまたは「良く分からなしリと判 別するアルゴリズムがある.この判定法を確率的 素数判定法(probabilistic primality test)とし1
うことがある.これに対して「素数である」ある いは否と判定するアルゴリズムは決定的素数判定 法(deterministicprimality test)という.次の フェルマ一法は代表的な確率的素数半Ij定法で、ある.
ブエノレマー法
フェルマーの小定理の対偶をとることで,次の 結果が得られる.
(a, n)
=
1 かっ a (n‑l ) 手
1 (mod n) となる整数aが存在すれば nは合成数である.すなわち,あるnが与えられたとき, (a, n)=
1となる aに対してa(n‑l)を計算し,それがnを 法として 1と合同でなければ nはただちに合成 数であることが分かる.このような合成数判定法 をフェルマーテストといい この操作を複数回重 ねて行うことで素数を確率的に判定する方法をフ ェルマー法という.
4 ふるい ( s i e v e ) 系の素因数分解
ふるい(sieve)系の素因数分解は,フェルマー 法から発展していったものである.中学校で扱う 初歩的な因数分解を利用したものであるが,極め て効果的な素因数分解法であるといえるだろう.
このフェルマ一法に様々なアイデアを盛り込む ことによって,従来の試行割算法より効率的な方 法が次々と提案された.
基 本 原 理 一 般 にnの素因数分解には X2三 y2 (mod n)
となる x,yを見つければよい.当然だが,最初 からx三 士yとすればこの合同式は得られるが無 意味である.
Xi三 Yi (mod n) かつ 科 学Yi
となる Xi' Yiを集めて組み合わせて平方数を作 る.そして, mod nでの代表元を異なるようにと って,その分解の違いを利用するのである.
く平方数作成> たくさんの整数 r0' r
l'
… .
しが与えられたとき
・まず適当な個数の素数の集合{p1'P2' . . , PB}
を決める.
次にその集合に属する素数のみで因数分解で きてしまうものをsmoothな数という.つまり
Yi
= T I
P j e(i.j)となる YiをB+l個さがす.これらをあらた めて r0' r l' • . ,. r Bとおく.
これらのべき指数部分に注目し,さらにそれ をmod2で考えて次のような (2/22上の) B次元ベクトルにする.
V i= (e (i, 1) mod 2, e (i, 2) mod 2,..., e i(, B) mod 2) 自明でない関係式を求める.
COVO+C1V1
+ ・ ・ ・
+CBVB三o
(mod 2) 元に戻した式は平方数である.直筆量
発想、・・・分解したいnに対して 1,2,3,... にnを加えて代表元を変える.
定数倍法
発想・・・分解したいnに対して, n/2の近 くの数を 2倍してnを引けば代表元がずれる.
連分数法 (ContinuedFraction Method)
発想・・・ベル方程式より得られる式を利用す れば,求めたい平方数をつくることができる.
2次ふるい法(Quadratic Sieve)
発想・・・分解したい奇数nに対して, F nの 近くの数を2乗してnを引けば代表元がずれる.
複 数 多 項 式2次ふるい法(MultiplePolynomial Quadratic Sieve)
発想・・・ 2次ふるい法と原理は同じだが 2 次式を複数利用することで,より効率的に求める
ことができる.
数体ふるい法(NumberField Sieve)
発想・・・代数方程式の複素数体での解を
e
, mod nでの解をM,とすると 0とM の式はmodnで異なる代表元を与える.
A K S判 定 法
発想・・・特定の定義に基づき,十分にたくさ んのパラメーターについての合同式を確かめれば,
素数性を厳密に判定することができる. (これは 自明ではないが,証明できる. )
‑401 ‑