这个工具能做什么
本工具可以帮你判断一个整数是质数(素数)还是合数。大于 1 的质数恰好只有两个约数:1 和它本身。合数则至少还有一个额外的约数。需要注意的是,0 和 1 既不是质数也不是合数,因此请输入 2 或更大的整数。
如何使用
在输入框中填入任意整数并提交即可。工具会告诉你这个数属于哪一类;如果是合数,还会一并给出它的最小质因数和一个分解示例(最小因数 \(\times\) 对应的另一个因数)。
计算原理
判断采用的是试除法。要确认 \(n\) 是否为合数,你只需用 2 到 \(n\) 的平方根之间的约数 \(d\) 逐一去除。只要其中有一个 \(d\) 能整除 \(n\)(余数为 0),\(n\) 就是合数;如果都除不尽,\(n\) 就是质数。之所以只需要测到 \(\sqrt{n}\),是因为若 \(n = a \times b\),那么两个因数中必定至少有一个 \(\le \sqrt{n}\)。
$$\text{Prime if } n > 1 \text{ and } \nexists\, d \in [2, \lfloor\sqrt{n}\rfloor] : n \bmod d = 0$$
$$\begin{gathered} \text{Classify}(n) = \begin{cases} \text{Prime} & \nexists\, d \in [2,\lfloor\sqrt{n}\rfloor],\; n \bmod d = 0 \\[0.4em] \text{Composite} & \exists\, d \in [2,\lfloor\sqrt{n}\rfloor],\; n \bmod d = 0 \\[0.4em] \text{Neither} & n < 2 \end{cases} \end{gathered}$$
实例演示
以 \(n = 91\) 为例。91 的平方根约为 9.54,所以我们依次测试 2、3、5、7、9。结果发现 \(91 \div 7 = 13\) 正好整除,因此 91 是合数,最小因数为 7,分解为 \(7 \times 13\)。相比之下,97 在 9 以内没有任何约数,所以它是质数。
常见问题
1 是质数吗?不是。按照定义,质数必须恰好拥有两个不同的正约数,而 1 只有一个约数。
2 是质数吗?是的。它是唯一的偶质数。
为什么测到平方根就够了?任何大于 \(\sqrt{n}\) 的因数,都会与一个小于 \(\sqrt{n}\) 的因数配对出现,而后者在搜索中已经被检查过了,所以再往 \(\sqrt{n}\) 以上去测试纯属多余。