跳到主要内容

质数与素数怎么判断:从定义到孪生质数的完整指南

质数只有两个因数,就是1和它本身。这篇文章讲清楚怎么判断一个数是不是质数,怎么列出区间内所有素数,质数在密码学和数学里有什么用,以及什么是孪生质数。

发布于 作者 李雷
#质数 #素数 #数论 #质因数分解 #密码学

质数与素数怎么判断:从定义到孪生质数的完整指南

质数和素数是同一个东西,只是叫法不同。它的定义很短:一个大于 1 的整数,如果只有两个因数,就是 1 和它本身,那它就是质数。换句话说,除了 1 和自己,再也找不出别的数能整除它。比如 7 只能被 1 和 7 整除,所以 7 是质数;而 9 除了 1 和 9,还能被 3 整除,所以 9 不是质数,它是合数。

这条"只有两个因数 1 和它本身"的标准,看起来简单,真正算起来却藏着不少坑。下面我把判断质数、列出区间质数、它的实际用途,以及孪生质数这几件事一次讲透。

一个数到底是不是质数

最朴素的判断办法是试除:拿这个数依次去除以 2、3、4、5……一直试到它的平方根。只要中间有一个能整除,它就是合数;一个都除不尽,它就是质数。为什么试到平方根就够了?因为如果一个数有大于平方根的因子,那它必然也有一个小于平方根的对应因子,所以小的那边没找到,大的那边也不会有。

举个实在的例子。前几个质数是 2、3、5、7、11,它们都只有两个因数。而 9 不是质数,因为 9 = 3 × 3,它有 1、3、9 三个因数。很多人会把 9 这种"看着像质数"的奇数误判成质数,试除法能立刻把 3 这个因子找出来,误会就消除了。

这里还有一个常被搞错的细节:1 不是质数。质数要求恰好有两个不同的因数,而 1 只有一个因数,就是它自己,所以 1 既不是质数也不是合数。这不是抠字眼,而是为了让"算术基本定理"成立,每个大于 1 的整数都有唯一的质因数分解,如果把 1 算成质数,你就能往任何分解式里随便塞 1,唯一性就被破坏了。

区间内的所有质数怎么找

如果要一次性列出某个范围内的全部质数,一个一个试除太慢。更聪明的办法叫埃拉托斯特尼筛法,简称埃氏筛。它的思路是反过来想:先把范围内所有数都假设成质数,然后从 2 开始,把 2 的倍数全划掉,再把 3 的倍数全划掉,接着 5、7……每次拿没被划掉的最小数去划它的倍数。划到最后还站着的,就是质数。

比如在 2 到 30 之间,筛完剩下的是 2、3、5、7、11、13、17、19、23、29,正好十个。手算容易漏,改用 质数计算器 的区间模式,输入起止范围就能拿到完整、没有缺口的列表,适合给程序写单元测试,或者给哈希表挑一个质数容量。

质数在密码学和数学里的用途

我自己第一次真正体会到质数的分量,是写一段 RSA 作业代码的时候。RSA 加密的安全性,靠的就是一个朴素到反常识的事实:把两个大质数相乘很容易,但把乘出来的大数再分解回那两个质数极其困难。你随手就能算 61 × 53 = 3233,可如果给你一个几百位的合数,要找出它的两个质因子,目前最快的计算机也得算上天文数字的时间。我把候选数粘进判定工具确认它们都是质数,再相乘当模数,这种"正着走容易、反着走难"的不对称,正是现代公钥加密的地基。

除了密码学,质数在数学里也是基石。算术基本定理说,每个大于 1 的整数都能唯一地写成质数的乘积,比如 360 = 2³ × 3² × 5。质数就像整数世界的"原子",所有合数都由它们搭起来。哈希表选质数容量来减少冲突、随机数生成器用质数做周期,背后都是同一类道理。

孪生质数是什么

在质数列表里走一遍,你会注意到有些质数挨得很近,刚好相差 2,比如 3 和 5、5 和 7、11 和 13、17 和 19。这种相差 2 的一对质数,叫孪生质数。

孪生质数有意思的地方在于,它们越往大数走越稀疏,但似乎永远不会彻底消失。是否存在无穷多对孪生质数,至今仍是数论里一个没被证明的著名猜想。你可以用区间模式跑一段范围,亲自扫一遍相邻且相差 2 的项,因为筛法给的是精确、无遗漏的列表,你看到的规律是真实的,不是某个近似算法造成的假象。想顺手做做相关的因数运算,也可以配合 最大公约数与最小公倍数计算器 一起用。

质数从一条三个字的定义出发,一路通到密码学的地基和数论最深的未解之谜。把"只有两个因数 1 和它本身"这件事吃透,后面那些看起来吓人的概念其实都顺理成章。


Made by Toolora · Updated 2026-06-13