zoukankan      html  css  js  c++  java
  • 二次剩余学习笔记

    本来不想学这东西,但是发现学了就能水两个多项式板子,那还是学吧。

    1 二次剩余是什么

    [x^2equiv npmod p ]

    其中 (p)奇质数

    你发现这玩意很像模意义的开根,事实上就是。

    如果方程存在一个解,(n) 就是模 (p) 意义下的二次剩余,反之是非二次剩余。

    2 解的数量

    假设存在多个解。

    [x_0^2equiv x_1^2pmod p ]

    [x_0^2-x_1^2equiv 0pmod p ]

    [(x_0-x_1)(x_0+x_1)equiv 0pmod p ]

    [ecause x_0 otequiv x_1pmod p ]

    [ herefore x_0+x_1equiv0pmod p ]

    因此我们证明了如果存在解,必定存在恰好两个解。

    3 判断是否是二次剩余

    假设 (0<n<p)

    [n^{p-1}equiv 1pmod p ]

    [(n^frac{p-1}{2})^2equiv1pmod p ]

    因此 (n^frac{p-1}{2}equivpm1pmod p)

    结论:(1) 的时候是二次剩余,取 (-1) 的时候不是。

    证明先鸽着。

    4 求解二次剩余

    我们使用 Cipolla 算法。

    首先,我们随便找一个数 (a),让 (a) 不是模 (p) 意义下的二次剩余。

    定义 (omega) 为一个虚数,使得 (omega^2=a^2-n)

    那么一个解就是 ((a+omega)^frac{p+1}{2})

  • 相关阅读:
    flush privileges 什么意思
    kill
    xargs
    mysql 5.6 与5.7安装
    内核线程、轻量级进程、用户线程
    在gdb将所有线程的堆栈输出到文件中去
    GDB 反向调试(Reverse Debugging)
    redhat 6.6 安装 (LVM)
    GDB中创建要素数据集
    AO Identify地图交互
  • 原文地址:https://www.cnblogs.com/dead-X/p/mod-sqrt.html
Copyright © 2011-2022 走看看