我的博客和笔记我的博客和笔记
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
  • 我的文章

    • 从抛币协议到智能合约

      • Part1
      • Part2
    • JPEG算法解密

      • Part1
      • Part2
      • Part3
      • Part4
      • Part5
      • Github
    • SPH算法简介

      • Part1
      • Part2
      • Part3
      • Part4
      • Github
    • 赌博中的数学:Martingle策略
    • 如何生成一个随机的圆形
    • 一个简单的DH密钥协商算法的实现
    • 如何计算线段和圆的交点
    • 一道数学趣题
    • 斐波那契数列和1/89
    • 匀速贝塞尔曲线运动的实现

      • Part1
      • Part2
  • 开源项目

    • TurboLink
    • TinyEncrypt
    • UnrealStyleGuide
    • AxTrace
    • Cyclone
  • 学习笔记

    • 数学相关

      • 常用数学符号
      • 群
      • 数论(一)
      • 数论(二)
        • 5.二次剩余
          • 5.1 二次剩余(Quadratic residue)和二次非剩余定义
          • 5.2 举例
          • 5.3 定理:欧拉准则
          • 5.4 定理
          • 5.5 举例
          • 5.6 定理
          • 5.7 举例
          • 5.8 定理
          • 5.9 举例
        • 6. 勒让德-雅可比符号
          • 6.1 定义
          • 6.2 定理
          • 6.3 定义
          • 6.4 简写
        • 7. 模质数的二次平方根
          • 7.1 定理
          • 7.2 举例
          • 7.3 算法:求模为质数时的平方根
        • 8. 模合数的二次平方根
          • 8.1 算法 模2的幂
          • 8.2 算法 模质数的幂
          • 8.3 举例
          • 8.4 算法
          • 8.5 举例
          • 8.6 定理
      • 数论(三)
      • 概率
    • 密码学

      • RSA
      • 抛币协议
      • 智能扑克协议
    • 图形学

      • 数学基础

        • 矢量
        • 矩阵
        • 立体角
        • 几何变换(一)
        • 几何变换(二)
        • 法线变换
        • 摄像机变换
      • 光照模型

        • 传统光照模型
        • 光度学
        • 双向反射分布函数(BRDF)
        • 微平面理论(一)
        • 微平面理论(二)
        • 微平面理论(三)
        • 光照方程
      • 环境光渲染

        • 环境光渲染(一)
        • 环境光渲染(二)
    • 编程语言

      • JavaScript

        • 环境搭建
        • 基本语法
        • 函数
        • 对象和类

数论(二)


5.二次剩余

5.1 二次剩余(Quadratic residue)和二次非剩余定义

设整数n>1,a<n,如果存在𝕫x∈zn,满足x2≡a(modn),那么称a是模n的二次剩余,否则a就称为模n的二次非剩余,用QRn表示模n的二次剩余集合,用QNRn表示模n的二次非剩余集合

5.2 举例

QR11={02,12,22,32,42,52,62,72,82,92,102,112,…}(mod11)={0,1,3,4,5,9}QNR11={2,6,7,8,10}

5.3 定理:欧拉准则

针对质数p的二次剩余判定,对于质数p,任意x∈Zp∗,x∈QRp的充分必要条件为

x(p−1)/2≡1(modp)

x∈QNRp的充分必要条件为

x(p−1)/2≡−1(modp)

5.4 定理

针对合数n的二次剩余判定,n=p1a1×p1a1×⋯×pkak,那么x∈QRn的充分必要条件为:

x(modpiai)∈QRpiai

5.5 举例

n=5×7QR5={0,1,4}QNR5={2,3}QR7={0,1,2,4}QNR7={3,5,6}QR35={0,1,4,9,11,14,15,16,21,25,29,30}

5.6 定理

对于质数p,Zp∗中有(p−1)/2个元素是模p的二次剩余,另外(p−1)/2个元素是模p的二次非剩余

5.7 举例

Z11∗={1,2,3,4,5,6,7,8,9,10}{1,3,4,5,9}∈QR11{2,6,7,8,10}∈QNR11

5.8 定理

对于两个质数的乘积n=qp,那么Zn里恰好有1/4的数,也就是(p−1)(q−1)/4个是二次剩余,一般来说,如果合数n有k个质数因子,那么Zn∗中的元素中有1/2k是二次剩余

5.9 举例

Z15∗={1,2,4,7,8,11,13,14}{1,4}∈QR15{2,7,8,11,13,14}∈QNR15

6. 勒让德-雅可比符号

6.1 定义

对于任意质数p>2,和任意a,定义勒让德符号(Legendre_symbol)为L(a,p)

L(a,p)={1if a∈QRp and a≢0(modp)−1if a∈QNRp and a≢0(modp)0if a≡0(modp)

6.2 定理

勒让德符号计算方法

L(a,p)=a(p−1)/2(modp), and L(a,p)=∈{−1,0,1}

6.3 定义

对于合数n>1, 其素因子n=p1p2⋯pk(可重复),任意整数a,定义雅可比符号(Jacobi symbol)

J(a,n)=L(a,p1)L(a,p2)⋯L(a,pk)

注意:雅可比符号不能确定一个数a是否是对模n的二次剩余(除非n是质数),比如

J(7,143)=L(7,11)L(7,13)=1

但7并不是143的二次剩余

6.4 简写

勒让德符号和雅可比符号也可统一简写为(ap) ,或者(a|p)

7. 模质数的二次平方根

7.1 定理

对于质数p>2,如果a∈QRp,a≠0,那么方程

x2≡a(modp)

在有两个解,也就是说a有两个平方根,其中一个在区间[1,(p−1)/2],另一个在区间[(p+1)/2,p−1],而且,其中一个平方根也属于模p的二次剩余,称为主平方根(pricipal square root)

7.2 举例

对于方程

x2≡9(mod11)

有两个解x1=3,x2=8, 其中

3∈[1,5],8∈[6,10],3∈QR11

7.3 算法:求模为质数时的平方根

7.3.1 特殊情况

对于方程x2≡a(modp),a∈QRp 如果p≡3,7(mod8), x≡±a(p+1)/2(modp) 如果p≡5(mod8), x≡±a(p+3)/8(modp) 如果p≡3(mod4), x≡±a(p+1)/4(modp)

7.3.2

对于一般情况的质数p,使用Tonelli–Shanks算法求解

8. 模合数的二次平方根

参考: https://www.johndcook.com/blog/quadratic_congruences/

8.1 算法 模2的幂

对于方程x2≡a(mod2),有解x≡1(mod2) 方程x2≡a(mod22),当a≡1(mod4)时有2个解,x≡±1(mod4) 方程x2≡a(mod2n),n≥3,gcd(a,2)=1, 当a≡1(mod8)时有4个解,

8.2 算法 模质数的幂

求解方程x2≡a(modpk),k>0,gcd(a,p)=1, 方程有解的充分必要条件是(ap)=1, 也就是a是模p的二次剩余 方程有两个解,使用Hensel's lemma算法 设xk是x2≡a(modpk)的解,有yk存在使得等式2xkyk≡1(modpk)成立,那么xk+1=xk−(xk2−a)yk是方程x2≡a(modpk+1)的解

8.3 举例

求解方程

x2≡23(mod343)

其中343=73,首先解方程

x12≡23≡2(mod7),x1=±3

以x1=3为例,使用扩展欧几里得算法求解

2×3×y1≡1(mod7),y1=6x2=(x1−(x12−a)y1)(mod49)=38

同理,求方程

2×38×y2≡1(mod49),y2=20x3=(38−(382−23)×20)(mod343)=87

所以,最终方程的两个解是±87(87,256)

8.4 算法

对于合数n=p1p2⋯pk, 整数a∈QRn, 求解方程x2≡a(modn) 首先求解模质数方程

xp12≡a(modp1)xp12≡a(modp1)⋯xpk2≡a(modpk)

然后根据中国剩余定理,解方程组

{x≡xp1(modp1)x≡xp2(modp2)⋯x≡xpk(modpk)

得到x,由于每个xpi有两个解,所以最终x有2k个解

8.5 举例

x2≡15(mod77),p=7,q=11

按照模为质数的方法解方程

{xp2≡15≡1(mod7) xp=±1(1,6)xq2≡15≡4(mod11) xq=±9(2,9)

按照中国剩余定理,解以下四个方程组

{x≡1(mod7)x≡2(mod11){x≡1(mod7)x≡9(mod11){x≡6(mod7)x≡2(mod11){x≡6(mod7)x≡9(mod11)

得到四个解x=57,64,13,20

8.6 定理

如果不知道n的素因子,那么就模n的平方根是非常困难的问题

Prev
数论(一)
Next
数论(三)