素数

概述

素数(prime)是大于 1 且仅被 1 和自身整除的正整数,是数论的”原子”——每个大于 1 的整数都可以唯一分解为素数的乘积(算术基本定理)。素数有无穷多个(欧几里得反证法证明),其分布规律由素数定理 刻画。埃拉托斯特尼筛法是找出不超过 的所有素数的经典算法,梅森素数 是一类重要的特殊素数。素数是现代密码学(如 RSA)安全性的数学基础。

定义

素数与合数(Definition 1)

  • 大于 1 的正整数 如果仅被 1 和 整除,则称 素数(prime)
  • 大于 1 的正整数如果不是素数,则称为合数(composite)
  • 注意:整数 1 既不是素数也不是合数(它只有一个正因子)
  • 等价判定: 是合数当且仅当存在整数 使得

素数定理(Theorem 4: The Prime Number Theorem)

为不超过 的素数个数,则

该定理由 Hadamard 和 de la Vallee-Poussin 于 1896 年利用复变函数理论证明。

埃拉托斯特尼筛法(Sieve of Eratosthenes)

找出不超过给定正整数 的所有素数的算法:

  1. 列出 的所有整数
  2. 从第一个素数 开始,删除所有 的倍数( 本身保留)
  3. 找到下一个未被删除的数(即下一个素数),删除其所有倍数
  4. 重复步骤 3,直到处理完不超过 的所有素数
  5. 剩余未被删除的数即为不超过 的所有素数

梅森素数(Mersenne Primes)

形如 为素数)的素数称为梅森素数

  • 都是梅森素数
  • 不是梅森素数
  • 判定 是否为素数有高效的 Lucas-Lehmer 测试
  • 目前已知最大素数几乎都是梅森素数,由 GIMPS 分布式计算项目发现

核心性质

性质描述说明
素数无穷性素数有无穷多个欧几里得反证法证明(Theorem 3)
素数定理刻画素数的渐近分布
合数的素因子上界合数 必有不超过 的素因子试除法的基础(Theorem 2)
1 的特殊性1 既不是素数也不是合数只有一个正因子
唯一分解每个大于 1 的整数唯一分解为素数乘积算术基本定理
梅森素数条件 为素数要求 为素数反之不成立(如
素数密度递减 附近找到素数的概率约为 素数定理的直接推论

关系网络

graph TB
    A["素数"] --> B["算术基本定理"]
    A --> C["最大公约数"]
    A --> D["费马小定理"]
    A --> E["RSA密码系统"]

    A --> F["素数无穷性"]
    A --> G["素数定理"]
    A --> H["埃拉托斯特尼筛法"]
    A --> I["梅森素数"]
    A --> J["试除法"]

    F --> F1["欧几里得反证法"]
    F --> F2["Q = p₁p₂...pₙ + 1"]

    G --> G1["π(x) ~ x/ln x"]
    G --> G2["Hadamard & de la Vallee-Poussin 1896"]

    H --> H1["筛去 ≤ √n 的素数的倍数"]
    H --> H2["基于 Theorem 2"]

    I --> I1["2^p - 1 (p为素数)"]
    I --> I2["Lucas-Lehmer 测试"]

    J --> J1["检验 ≤ √n 的素数"]
    J --> J2["O(√n) 复杂度"]

    style A fill:#5cb85c,color:#fff
    style B fill:#4a90d9,color:#fff
    style C fill:#d9534f,color:#fff
    style G fill:#e8a838,color:#fff
  • 算术基本定理 将素数确立为整数的”原子”:每个大于 1 的整数唯一分解为素数乘积
  • 最大公约数 的素因子分解法依赖于素数:
  • 费马小定理 是以素数模为条件的核心定理
  • RSA 密码系统的安全性依赖于大整数素因子分解的计算困难性

章节扩展

第4章:数论与密码学

素数是第 4 章 4.3 节的核心主题之一:

  • 4.3 素数与最大公约数:素数与合数的定义(Definition 1)、素数无穷性(Theorem 3)、素数定理(Theorem 4)、埃拉托斯特尼筛法、梅森素数、试除法(Theorem 2)
  • 4.4 解同余方程:当模为素数 时, 构成域,每个非零元素都有乘法逆元
  • 4.5 密码学应用:RSA 需要 finding large primes(找大素数)和 factoring 的大数分解困难性
  • 4.6 素性测试:Miller-Rabin 概率性测试和 AKS 确定性多项式时间测试

补充

素性测试的算法演进

素性测试(primality testing)是计算数论的核心问题之一。试除法的时间复杂度为 ,对于大整数效率不足。实际应用中广泛使用的是 Miller-Rabin 概率性素性测试(Miller & Rabin, 1980),它基于费马小定理的逆命题,可以在 时间内以 的错误概率判定 是否为素数。2002 年,Agrawal、Kayal 和 Saxena 发现了 AKS 素性测试,这是第一个确定性多项式时间的素性测试算法,复杂度为 位运算。值得注意的是,虽然素性测试有多项式时间算法,但整数分解至今没有已知的多项式时间算法,这一不对称性正是 RSA 密码系统安全性的基础。

学术来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.). McGraw-Hill, Section 4.3.

参考链接:Agrawal, M., Kayal, N., & Saxena, N. (2004). PRIMES is in P. Annals of Mathematics, 160(2), 781-793.

参见