# Thm.6のアルゴリズム起こし ### パラメータ設定(メモ書き) $N = 293^4 \times 307 = 2262605595907$ $b = 293^4 = 7370050801$ $f'(x):=(x-222)(x-12345)(x-98765)$ $f'(x):=x^3 - 111332 x^2 + 1243920345 x - 270674371350$ $\delta = 3$ $\beta =0.78$ $N^{\beta} = 4331067062$ $b \geq N^\beta,b|N$ $N^{\frac{\beta^2}{\delta}} \approx 320.268832172320$ $f'(x) = 0$なる$f'(x) = (k'b+a_3)x^3 + (k'b+a_2)x^2 + (k'b+a_1)x + a_0$があったとき、$f(x) \equiv 0 \pmod{b}$は$f'(x)$の各項の$\pmod{b}$をとれば良い。 $f(x) := x^3 + 7369939469 x^2 + 1243920345 x + 2017508287$ $f(x) \equiv 0 \pmod{b}$ $b \geq N^\beta,b|N$ $X \leq b^{\frac{1}{\delta}}$ 以上のパラメータで問題ないか確かめる。 ・コード ``` P.<x> = PolynomialRing(ZZ) N = 293^4 * 307 print("法N:") print(N) b = 293^4 print("Nの約数である未知数b:") print(b) fd = (x-222)*(x-12345)*(x-98765) print("解にx=222,12345,98765をもつ通常の多項式f'(x)") print(fd) f = x^3 + 7369939469 * x^2 + 1243920345 * x + 2017508287 print("f'(x)の各項をbで割った余りの式f(x)") print(f) print("f(x)はf(x)≡ 0 (mod b)(x = 222,12345,98765)をもつはず") print("以下はそれぞれf(x)にx=222,12345,98765に代入してbで剰余をとった値") print((222^3 + 7369939469 * 222^2 + 1243920345 * 222 + 2017508287) % b) print((12345^3 + 7369939469 * 12345^2 + 1243920345 * 12345 + 2017508287) % b) print((98765^3 + 7369939469 * 98765^2 + 1243920345 * 98765 + 2017508287) % b) beta = 0.78 print("実数β:") print(beta) delta = f.degree(x) print("f(x)の次数δ:") print(delta) print("条件N^β") print(int(N^beta)) print("条件N^(β^2 / δ)") print(int(N^(beta^2 / delta))) ``` ・出力 ``` 法N: 2262605595907 Nの約数である未知数b: 7370050801 解にx=222,12345,98765をもつ通常の多項式f'(x) x^3 - 111332*x^2 + 1243920345*x - 270674371350 f'(x)の各項をbで割った余りの式f(x) x^3 + 7369939469*x^2 + 1243920345*x + 2017508287 f(x)はf(x)≡ 0 (mod b)(x = 222,12345,98765)をもつはず 以下はそれぞれf(x)にx=222,12345,98765に代入してbで剰余をとった値 0 0 0 実数β: 0.780000000000000 f(x)の次数δ: 3 条件N^β 4331067062 条件N^(β^2 / δ) 320 ``` 以上をThm.6に当てはめる。 $N$を既知の整数($2262605595907$)、$0 \leq \beta \leq 1$を実数とし($0.78$)、$f(x)$をモニックな1変数$\delta$次多項式 ($x^3 + 7369939469*x^2 + 1243920345*x + 2017508287,\delta = 3$) とする。このとき、未知の$b \geq N^\beta,b|N$ ($7370050801 \geq 4331067062$)について$f(x_0) \equiv 0 \pmod{b}$が成立(先ほど確かめた)、かつ $$|x_0| \leq N^{\frac{\beta^2}{\delta}}$$を満たす$x_0$を、効率よく求めることができる。 (解$x_0$は$222$,$N^{\frac{\beta^2}{\delta}} \approx 320$) よってこのパラメータでやっていけばいいはず。 ### ダメだったのでパターン2 $N = 293^4 \times 307 = 2262605595907$ $b = 293^4 = 7370050801$ $f'(x):=(x-222)(x-12345)(x-98765)$ $f'(x):=x^3 - 111332 x^2 + 1243920345 x - 270674371350$ $\delta = 3$ $\beta =0.78$ $N^{\beta} = 4331067062$ $b \geq N^\beta,b|N$ $N^{\frac{\beta^2}{\delta}} \approx 320.268832172320$