质数判断计算器
在线质数判断计算器:输入一个正整数,一步判断它是质数还是合数。合数给出最小质因数与分解式,质数说明试除依据,并对 10 亿以内的数给出前后相邻质数。全程整数(BigInt)精确运算,支持大到 10 万亿的整数。
支持 1 到 10 万亿(10¹³)之间的整数,结果用整数(BigInt)精确判断。
判断结果
97 是质数
97 是质数:在 2 到 √97(约 9)之间没有能整除它的数,除了 1 和它本身外没有其它正约数。
只需试除到 √n⌊√97⌋ = 9前一个质数89下一个质数101
怎么用
- 输入正整数:在输入框里填一个正整数,例如 97。支持 1 到 10 万亿(10¹³)之间的整数,全程用整数(BigInt)精确判断,不会丢精度。
- 自动出判断结果:每改一次输入立即判断,给出「是质数 / 是合数 / 既非质数也非合数」的结论,并用一句话说明理由。
- 看判定依据:若是合数,工具给出能整除它的最小质因数与对应分解(如 91 = 7 × 13);若是质数,会说明在 2 到 √n 之间都找不到约数。
- 查相邻质数:对 10 亿以内的数,结果还给出前一个质数与下一个质数,方便找相邻质数、判断孪生质数等。
原理与公式
质数:大于 1 且只有 1 和自身两个正约数的整数。合数:大于 1 且还有其它正约数的整数。1 是「单位」,既非质数也非合数。
试除法(trial division)
依次用 2、3、5、7… 去试除 n。只要找到一个能整除 n 的数,n 就是合数, 该数即「最小质因数」;若试到 √n 仍无约数,n 即为质数。
为什么只试到 √n
若 n = a × b 且 a ≤ b,则 a ≤ √n。 所以约数若存在,必有一个落在 √n 以内;试到 √n没找到,就说明 n 无真因子。
例 97:⌊√97⌋ = 9,逐一试除 2~9 都不整除, 故 97 是质数。
例 91:试到 7 时 91 ÷ 7 = 13, 故 91 = 7 × 13 是合数。
精度:全程用整数(BigInt)取余判断,不经过浮点, 所有计算在浏览器本地完成。
常见问题
- 什么是质数?什么是合数?
- 质数(素数)是大于 1、且只能被 1 和它本身整除的整数,例如 2、3、5、7、11、13、97。合数是大于 1、除了 1 和它本身外还有其它正约数的整数,例如 4=2×2、12=2×6、91=7×13。换句话说,大于 1 的整数非质即合。本工具输入一个数即判断它属于哪一类,并给出依据。
- 1 是质数吗?2 是质数吗?
- 1 既不是质数也不是合数:质数要求「大于 1 且只有两个正约数(1 和自身)」,而 1 只有一个正约数,所以被单独归为「单位」。2 是质数——它是最小的质数,也是唯一的偶质数(其它偶数都能被 2 整除,必为合数)。本工具遇到 1 会明确提示它既非质数也非合数,遇到 2 会判为质数。
- 怎么判断一个数是不是质数?
- 最直接的方法是试除法(trial division):用 2、3、4… 一直试到 √n,只要有一个数能整除 n,n 就是合数;如果试到 √n 都没有约数,n 就是质数。为什么只到 √n?因为若 n = a × b 且 a ≤ b,则较小的因子 a 必不超过 √n,所以约数若存在,必有一个落在 √n 以内。本工具正是用这一方法,并给出能整除它的最小质数作为「合数的证据」。
- 为什么只需要试除到根号 n?
- 假设 n 是合数,可写成 n = a × b(a、b 都大于 1)。若两个因子都大于 √n,则 a × b 会大于 n,矛盾;所以两个因子里至少有一个不超过 √n。因此只要在 2 到 √n 之间找不到任何约数,就能断定 n 没有真因子,是质数。例如判断 97 是不是质数,只需试到 ⌊√97⌋ = 9,发现 2~9 都不能整除 97,即可确认 97 是质数。
- 这个工具能判断多大的数?很大的数也准吗?
- 支持 1 到 10 万亿(10¹³)之间的整数,全程用整数(BigInt)精确取余,不经过 JavaScript 浮点数,因此结论绝对精确、不会因舍入出错。超过该范围会提示数字过大——因为通用试除法对极大的数会变慢(这也是 RSA 等密码学把「大数难分解」当作安全基础的原因)。对 10 亿以内的数,工具还会顺带给出前后相邻的质数。
- 质数判断有什么用?
- 用途很广:①密码学,RSA 加密依赖大质数,密钥生成需要快速判定质数;②数学题与编程题里常需判断质数、求质数表、找孪生质数(相差 2 的两个质数,如 11 和 13);③质因数分解、约分通分、求最大公约数/最小公倍数都以质数为基础。需要进一步把一个数拆成质因数相乘,可用本站的质因数分解计算器。