非自明な1の4乗根

10 adic の世界では、 \[x^4=1 \] は8個の解をもちます。今回は、これらの解のうち、4乗して初めて1になる原始4乗根を求めます。

計算方法

2 adic と 5 adic に分解して考えます。10 adic の原始4乗根は、 2 adic で考えると $\pm 1$ かつ、5 adic の$\pm \sqrt{-1}$ として求めれらます。 組み合わせを考えると全部で4種類求めることができます。 原始4乗根のうち一つを$\sqrt[4]{1}$とおくと、ほかのものも含めて \[\pm \sqrt[4]{1},\quad \pm \sqrt{1} \cdot \sqrt[4]{1}\] と表現できます。ただし、$\sqrt{1}$は非自明な1の平方根とします。

具体的には、 \[\pm 1\cdot \frac{1+\sqrt{1}}{2} + (\mbox{5 adic の$ \pm \sqrt{-1}$}) \cdot \frac{1-\sqrt{1}}{2} \] と計算できます。これを踏まえると、プログラムは次のようになります。

プログラム例

fourthRootOne(N):=block([result:[],s1,list,e1,e2],
    s1:mod(2*power_mod(5,2^N,10^N)-1,10^N), /*sqrt(1)*/
    list:zn_nth_root(-1,2,5^N), /*5adicの-1の2乗根*/
    e1:(1+s1)/2, /*10adicの基底1 */    
    e2:(1-s1)/2, /*10adicの基底2 */
    for i:1 thru 2 do(
        for k:1 thru 2 do(
            result:endcons(mod(e1*(-1)^i+e2*list[k],10^N), result)
        )
    ),
    result
);
fourthRootOne(20);/*求めたい桁数を引数にする。*/

実行結果.

[53640476581907922943,11847003581666295807,38152996418333704193,96359523418092077057]