质数判断器(免费)- 支持1000位、含质因数分解

输入最多 1000 位的数字即可立即判断是否为质数。同时显示质因数分解、前后相邻的质数、试除法步骤,以及本次结论由哪种判定法得出。免费、无需注册。

1000 以内的全部 168 个质数

2 3 5 7 11 13 17 19 23 29 31 37
41 43 47 53 59 61 67 71 73 79 83 89
97 101 103 107 109 113 127 131 137 139 149 151
157 163 167 173 179 181 191 193 197 199 211 223
227 229 233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349 353 359
367 373 379 383 389 397 401 409 419 421 431 433
439 443 449 457 461 463 467 479 487 491 499 503
509 521 523 541 547 557 563 569 571 577 587 593
599 601 607 613 617 619 631 641 643 647 653 659
661 673 677 683 691 701 709 719 727 733 739 743
751 757 761 769 773 787 797 809 811 821 823 827
829 839 853 857 859 863 877 881 883 887 907 911
919 929 937 941 947 953 967 971 977 983 991 997

1000 以内其余的数都是合数,即除了 1 和自身之外至少还有一个约数。

每个 10 的幂以内有多少个质数?

范围上限 质数个数 π(x) 质数所占比例
10 4 40%
100 25 25%
1,000 168 16.8%
10⁴ 1,229 12.29%
10⁵ 9,592 9.59%
10⁶ 78,498 7.85%
10⁷ 664,579 6.65%
10⁸ 5,761,455 5.76%
10⁹ 50,847,534 5.08%
10¹⁰ 455,052,511 4.55%
10¹² 37,607,912,018 3.76%
10¹⁵ 29,844,570,422,669 2.98%

π(x) 是质数计数函数,表示不超过 x 的质数个数。这个比例会不断变小(在 x 附近大约每 ln(x) 个数中有 1 个质数),但永远不会变成零,因为质数有无穷多个。

什么是质数判断器

质数判断器用来判断输入的整数是否「除了 1 和自身之外没有其他因数」。较小的数可以用手算试除来验证,但面对密码学中的候选大数、数学竞赛题目,或是长达数百位的数字时,试除法在合理时间内根本无法完成,因此需要根据数字规模切换不同的判定方法。

本工具最多支持 1000 位的整数,会根据数字大小自动选择既快速又数学上可靠的判定法:较小的数使用试除法,小于约 3.3×10²⁴ 的数使用米勒–拉宾检验得出确定性证明,更大的数则使用 Baillie–PSW 检验给出概率质数的结论。同时还会显示质因数分解、前后相邻的质数,以及具体是哪种方法得出了结论。

质数判断的使用方法

  1. 输入整数 在输入框中输入或粘贴最多 1000 位的整数。逗号和空格会被自动忽略。
  2. 查看判定结果 结果会显示该数是质数、合数,还是 1 这一特殊情况,并注明使用了哪种判定法。
  3. 查看详细信息 可以查看质因数分解、前后相邻的质数,以及孪生质数、梅森质数等性质。
  4. 查看试除步骤 对于较小的数字,可以在表格中查看实际尝试过的每一个除数。

用好本工具的小技巧

  • 质数是指大于 1 的整数中,除了 1 和它本身以外没有其他因数的数。这个数列从 2, 3, 5, 7, 11, 13, … 开始,并且永远不会结束。
  • 最基础的质数检测方法是试除法:用 2 到 √N 之间的每个整数去除 N。之所以到 √N 就可以停下,是因为如果 N = a × b,那么较小的那个因数一定不超过 √N。
  • 手算时也能很快排除大部分数字:除 2 以外的偶数、以 5 结尾的数、各位数字之和为 3 的倍数的数,都是合数。另外,大于 3 的质数一定是 6k − 1 或 6k + 1 的形式。
  • 对于很大的数字,试除法并不现实,计算机会改用米勒–拉宾检验和 Baillie–PSW 检验。本页面实现了这两种方法,因此即使粘贴一个 1000 位的数字,也能在一秒内得到结论。
  • 1 不是质数,因为定义中要求「大于 1」。而 2 是唯一的偶质数,比它更大的偶数都能被 2 整除。

应用场景

核对作业或竞赛答案

快速确认证明题或练习题中判定为质数的数字是否正确,如果不是,还会一并显示质因数分解。

体验密码学中的概念

输入较大的候选数,体验 RSA 等加密方式中质数判定的实际做法,并对比试除法与米勒–拉宾/Baillie–PSW 检验的差异。

查看数字的特殊性质

无需查阅资料表,即可当场确认一个数是否为孪生质数、索菲·热尔曼质数、梅森质数或费马质数。

学习编程与算法

通过试除步骤表了解质数判定算法是如何得出结论的,为自己动手实现打下基础。

术语解释

质数
大于 1 的整数中,除了 1 和自身之外没有其他因数的数。2, 3, 5, 7, 11, 13, … 无穷延续。
合数
除了 1 和自身之外还有其他因数的整数,可以写成若干质数的乘积。
试除法
用 2 到 √N 之间的整数依次去除 N 的判定方法。是完整的证明,但当 N 很大时无法在合理时间内完成。
米勒–拉宾检验
利用模 N 下 1 的平方根性质进行判定的方法。使用足够多的底数时,对小于约 3.3×10²⁴ 的数是确定性的证明。
Baillie–PSW 检验
米勒–拉宾检验与强 Lucas 检验相结合的判定法,用于无法给出确定性证明的大数,目前尚未发现任何反例。
概率质数
通过了 Baillie–PSW 等强力判定法的数,极大概率是质数,但并非数学上的完全证明。
孪生质数
如 11 与 13 这样相差恰好为 2 的一对质数,是否有无穷多对至今仍是数学未解难题。
梅森质数
形如 2 的 p 次方减 1 的质数,历史上发现的多个最大质数都属于这一形式。

常见问题

最多 1000 位。小于 10¹² 的数使用试除法,小于 3,317,044,064,679,887,385,961,981 的数使用确定性的米勒–拉宾检验,更大的数则使用 Baillie–PSW 检验。质因数分解和相邻质数搜索的计算量远大于质数判定,因此支持范围会小一些。

对于大约超过 3.3 × 10²⁴ 的数,结论来自 Baillie–PSW 检验。它目前没有已知反例,但也没有证明。实际上密码学库同样依赖这一检验,所以「概率质数」的结论极为可靠。另外,相反方向的结论毫无疑义:显示为合数时,说明确实找到了见证数或因数,那就是一个证明。

因为质数的定义要求「大于 1 的整数」。排除 1 才能保持质因数分解的唯一性:如果把 1 也算作质数,6 就可以写成 2 × 3、1 × 2 × 3、1 × 1 × 2 × 3 等无穷多种形式,算术基本定理便不再成立。

2 除了 1 和它本身之外没有别的因数,符合定义。它同时也是唯一的偶质数,因为比 2 更大的偶数都能被 2 整除,从而多出第三个因数。

不存在。公元前 300 年左右欧几里得就证明了质数有无穷多个:把任意有限个质数相乘再加 1,所得的数一定含有不在这个列表中的质因数。存在的只是「目前已知最大的质数」,而这个纪录一直在被打破,当前是 2024 年发现的 2¹³⁶²⁷⁹⁸⁴¹ − 1。

用不超过其平方根的质数依次去除即可:2, 3, 5, 7, 11, … 例如 391,√391 ≈ 19.8,所以只需试 2, 3, 5, 7, 11, 13, 17, 19,其中 17 能整除,得到 391 = 17 × 23。各位数字之和为 3 的倍数就能被 3 整除,这类技巧也很有用。
工具君

闲话 ― 质数为何如此重要

质数常被称为「算术的原子」。算术基本定理指出,任何大于 1 的整数都能唯一地写成若干质数之积,也就是说质数是构成所有整数、且无法再拆分的基本零件。上面显示的质因数分解之所以是唯一的,原因也在这里:360 就是 2³ × 3² × 5,不存在其他写法。

判定一个巨大的数是否为质数,与把它分解成质因数,是两个完全不同的问题,这一区别的历史值得一说。利用费马小定理可以做快速判定,但存在一些合数无论换哪个底都能蒙混过关,其中最小的一个是 561,可以用上面的按钮试一下(这类数称为卡迈克尔数)。米勒–拉宾检验通过在中途检查 1 的平方根堵住了这个漏洞,并且已经证明:以最前面的 13 个质数为底时,它对约 3.3 × 10²⁴ 以下的所有数都是确定性的判定法。超出这个范围后,本页面会加上强 Lucas 检验,构成 Baillie–PSW 检验。至今没有发现任何能通过它的合数,但这一点尚未被证明,所以对非常大的数,结果会标注为「概率质数」。

正是这种「容易判定、难以分解」的不对称性支撑起了现代密码技术。至今仍在保护 HTTPS 通信与数字签名的 RSA 加密,就是把两个大质数相乘来生成公钥。人们相信从这个乘积还原出原来的两个质数在计算上是不可行的,于是就形成了「验证只需一瞬、分解却做不到」的局面。这种差距在本页面上也能亲身体会:1000 位数字的质数判定几乎瞬间完成,而两个 30 位质数相乘得到的 60 位合数,却分解不出来。

质数还留下了数学中最古老的一些未解难题。像 11 与 13,或者 1,000,000,000,061 与 1,000,000,000,063 这样的孪生质数是否有无穷多对,至今无人知晓——尽管质数本身不会用尽这件事,早在公元前 300 年左右就被欧几里得证明了。刷新纪录的搜索也仍在继续:GIMPS 项目的志愿者们分头检验形如 2^p − 1 的梅森数,目前已知最大的质数是 2024 年发现的 2¹³⁶²⁷⁹⁸⁴¹ − 1,共有 41,024,320 位。