ネタがないので、因数分解振り返り。 最初はバグかと思ったのだが、mod の世界の多項式は、定数項のみでなくても微分するとになることがある。 これは Cantor-Zassenhaus の論文に書いてあった。論文に書くほどのことではない気がするが、親切にもそう書いてあったので、気がついた。 mod なら次数がの倍数の項は微分すると係数にの倍数が出てきてゼロになるのである。そこから多項式が微分してなら、次数がの倍数の項しかないということで、これはある多項式の乗になっているということである。これもCantor-Zassenhaus の論文に書いてあった。
となる。これで微分してでもmod の世界で無平方分解が出来る。同時にわかることは、プログラムで計算する時に、乗する際は実際に回掛けるのではなく、係数ベクトルを個おきになるように変えればよい。 さらに、ここから以前から悩んでいたjavascriptで扱うにはやや指数が大きくなる問題も解決できた。ので一応書いておく。 Cantor-Zassenhaus 法では、を素数、を因数分解する多項式の次数とすると、mod の世界でランダムな多項式を乗する必要があり、この乗で悩んでいたのである。乗の計算は簡単だが、これは乗ではない。そこで乗に直すことにした。は奇素数なのでとおく。
なのでについての次の漸化式が成り立つ。
あとはプログラムでループすればよい。乗はしなければならないが、の半分だから気にしない。
今回の記事は、ari23さんのブログ記事を参考にしました。