複数多項式二次篩

1.18 川原
未鈴
目次
1、熊木さんのプログラムの問題点(復習)
2、改良点
3、改良版の性能評価
4、卒研発表の内容
1、熊木さんのプログラムの問題点
(1)まず 𝑘 を決める。この𝑘は𝑘𝑛 ≡ 1(mod 4)をみた
し、
𝑘𝑛
𝑝𝑖
= 1, 𝑝𝑖 ∈ 𝐵なる𝑝𝑖 がなるべく多く取れるもの
が望ましい。とりわけ
8)となる𝑘を選ぶ。
𝑘𝑛
2
= 1とするには𝑘𝑛 ≡ 1(mod
例 𝑛=5835505721を入力すると
𝑘=89として素因数分解を行っている。
5835505721 ×89= 519360009169を入力すると、
𝑘=1で済むはずなのに、 わざわざ𝑘= 8089を使って
いる。
2、改良点
𝑛 が法3、5,7,11,13の平方剰余の時、𝑘=1
とする。
それ以外の時は例えばmod 8 で 3 になるような 𝑛 な
らば、
mod 8 で 3 になるような 𝑘 をもってくる。
3、性能比較
・NZMATHにある熊木さんのプログラムと改良版で実
験
・10、15、20、25、30、35、40桁の合
成数について実験
・それぞれの実験の対象となった合成数は
素数×素数× 𝑘 となるものを使用。
・各桁の約10個の合成数に対し,平均時間を算出
実験環境
 ハードウェア
AMD Phenom(tm) Ⅱ X6 1090T
Processor (3.2GHz 6cores)
Memory: 8GB
Disk:
HDD 2TB, SSD 64GB
CPU:
 システム
Server: Windows Server 2008 R2 Standard
Emulator: VMware(R) Player Ver.3.1.3
Linux OS: CentOS 5.5
(CPU: 4cores, Memory: 2GB,
HDD: 200GB )
 Python: 2.7.1
 NZMATH:1.1.0
実験結果
桁数
10
15
20
25
30
35
40
before
0.021
0.101
0.424
1.942
11.602
48.827
251.060
after
0.016
0.031
0.223
0.841
5.513
21.658
143.072
4、卒研発表の内容
1、MPQSとは
2、熊木さんのプログラムの性能評価
3、スッテプごとの時間のかかり方
係数決め、篩い、ガウスの消去法以外のところで
桁数が上がるごとに時間がかかっている
→ 乗数𝑘の問題点
4、改良
5、改良後の性能比較
6、まだ残っている問題点