Toolify

素数判定器 (含质因数分解和前后素数)

输入 10^18 以下的非负整数。计算器用试除法测试素性 (在合理时间内对 ~10^15 决定性), 合数给出质因数分解。

97
是素数
前一个素数
89
下一个素数
101

工作原理

什么是素数

素数是大于 1 的自然数, 除 1 和自身外没有正因子。最初几个素数: 2、3、5、7、11、13、17、19、23、29、31、37。它们是整数算术的「原子」 — 每个 ≥ 2 的整数可唯一表示为素数的乘积 (算术基本定理)。

按惯例 1 不是素数。0 和负数不是素数。2 是唯一的偶素数 — 其他每个偶数除了 1 和自身外还能被 2 整除, 所以是合数。

测试如何工作

我们用试除法: 检查能否被 2 整除, 然后 3, 5, 7, 11, ... 直到 √n。如果都不能干净整除, n 是素数。我们用 6k±1 优化, 只检查 6k+1 或 6k−1 形式的候选 (因为所有 > 3 的素数都是这种形式), 减少 2/3 的测试。

试除法对 ~10^15 以下的 n 快速 (亚秒)。之后, 需要高级测试如 Miller-Rabin (概率) 或 AKS (确定性)。我们限制在 10^18 以防止浏览器在极端输入上冻结。

为什么素数重要

密码学: RSA 加密把两个约 1000 位的素数相乘, 产生难以分解的数。安全性依赖大数分解的难度 — 这个问题已研究数千年。

数学教育: 质因数分解是基础。最大公约数、最小公倍数、模运算、分数、数论的概念都建立在质因数结构上。

计算机科学: 哈希表大小、随机数生成器、许多算法用素数的独特整除性属性。

常见问题

1 是素数吗?

不。1 是「单位」, 不是素数。素数恰好有两个不同的正因子 (1 和自身); 1 只有一个。

0 是素数吗?

不。素数是 > 1 的整数。

2 是素数吗?

是 — 2 是唯一的偶素数。所有其他偶数除 1 和自身外还有 2 作因子。

下一个素数怎么找的?

从 n+1 递增并在每步测试素性。任何数的 n × ln(n) 内总有素数, 所以即使大输入也快速终止。

为什么最大 10^18?

JavaScript BigInt 处理更大的, 但试除法变慢。10^18 对典型输入安全亚秒检查。再大请用专门工具如 SymPy 或 Mathematica。

可以检查 1000 位素数?

本工具不能 — 试除法在那种规模太慢。密码学用 Miller-Rabin 概率测试用于 1024 位 (~300 位) 素数。

什么是 Mersenne 素数?

形如 2^p − 1 的素数。截至 2025 年, 只知道 51 个。已知最大素数 (M82589933) 是约 2500 万位的 Mersenne 素数。

数据会上传吗?

不会。计算在本地; 不向服务器发送。

相关工具

最后更新: