质数计算器
用确定性 Miller-Rabin 判断质数(覆盖 64 位整数),并给出因数分解、最小质因数、相邻质数、第 n 个质数、区间质数列表与 π(n) 估算。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
整数范围 2 – 18446744073709551615(64 位整数)
质数
最小质因数—
因数分解97
上一个质数89
下一个质数101
π(n) 估算(n / (ln n − 1))27
π(n) 精确值(n ≤ 10⁷)25
素性判定用确定性 Miller-Rabin(前 12 个质数作底座),64 位整数以内结论一定正确
第 n 个质数
第 n 个质数7919
区间内的质数
使用埃拉托斯特尼筛,区间长度上限 100 万,终点上限 10 亿
质数个数21
101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199
这个工具能做什么
- 判断一个大整数是不是质数:64 位整数范围内用确定性 Miller-Rabin,结论一定正确,不是概率性猜测。
- 做 RSA、哈希取模或随机数选型时把大整数拆成质因数,Pollard rho 能处理 64 位范围内的半素数。
- 查相邻质数、第 n 个质数(n 最大 10 万)或某个区间里的全部质数,写算法题时用来对答案。
- 估算 π(n) 的数量级:既给 n / (ln n − 1) 的估算值,n 不超过一千万时还能给出精确的质数个数。
示例
输入
1000000016000000063
输出
合数 = 1000000007 × 1000000009
这是两个相邻的十位质数之积,用试除 + Pollard rho 分解得到升序质因数列表;因数分解上限是 2^64 − 1。
常见问题
素性判定会不会判错?
不会。用的是前 12 个质数作底座的 Miller-Rabin,这组底座对小于 3.3×10^24 的数给出确定性结论,覆盖全部 64 位整数。超过这个上界会直接拒绝,而不是给一个「大概率是质数」。
为什么输入超过 18446744073709551615 就报错?
因为整个模块按 64 位无符号整数设计:因数分解上限是 2^64 − 1,区间筛右端点上限 10 亿,π(n) 精确值上限一千万。超界会提示超出范围,避免长时间卡住页面。
0、1、负数怎么处理?
0 和 1 既不是质数也不是合数,判定结果为「都不是」;因数分解和最小质因数要求输入 ≥ 1,负数会提示请输入非负整数。
输入里可以带逗号或空格吗?
可以。解析时会去掉下划线、空格和千分位逗号,所以 1_000_000_007 和 1,000,000,007 都能识别,去掉分隔符后不是纯数字才报错。
区间质数为什么限制长度?
区间用分段筛计算,一次要为整个区间分配标记数组。区间长度上限 100 万、终点上限 10 亿,是为了让结果在一两秒内返回,超出会提示区间过长。
关键词:prime质数素数prime checkmiller-rabinfactorization因数分解nth primesieve埃氏筛pi(n)