质数判断器(免费)- 支持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 个质数),但永远不会变成零,因为质数有无穷多个。

广告

Tips

  • 质数是指大于 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 整除。
广告

常见问题

最多 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 位。

广告