这个计算器能做什么
这是一款三合一的质数工具。它可以:(1)查询第 n 个质数,即 \(P_{\text{n}} = p_{\text{n}}\);(2)判断某个整数是否为质数,并给出它在质数序列中的位置;(3)一键列出前 N 个质数。最前面的几个质数是 2、3、5、7、11、13、17……所谓质数(素数),是指大于 1、且除了 1 和它本身之外没有其他正因数的整数。
使用方法
先选择一种模式。在第 n 个质数模式下,输入从 1 开始计数的位置 \(n\)(例如 100),计算器会返回 \(\text{Prime}[100] = 541\)。在质数判断模式下,输入任意整数(例如 97),它会告诉你这个数是否为质数;如果是,还会给出它在质数序列中的序号 \(n\)。在列出前 N 个质数模式下,输入想要的质数个数,即可得到用逗号分隔的完整列表,以及其中最大的质数 \(\text{Prime}[\text{N}]\)。
公式原理
质数判断采用试除法:当 2 到 \(\sqrt{p}\) 之间不存在任何整数因数时,数字 \(p\) 即为质数。
$$\text{N} \text{ is prime} \iff \text{N} \ge 2 \;\wedge\; \nexists\, d \in \left[2,\;\sqrt{\text{N}}\,\right]: d \mid \text{N}$$在单独处理 2 之后,我们只需检验奇数因数 \(d\),并且只要满足 \(d \cdot d \le p\) 即可,这样计算又快、又能避免浮点误差。要找出第 n 个质数,就依次扫描候选数 2、3、4……,每遇到一个质数就计数一次,直到计数达到 \(n\)。质数 \(m\) 的序号等于 \(\pi(m)\),也就是小于或等于 \(m\) 的质数个数。
实例演算
以 97 为例。它是奇数,于是我们依次尝试 \(d = 3, 5, 7, 9\)(因为 \(9^2 = 81 \le 97\),而 \(11^2 = 121 > 97\))。这些数都不能整除 97,所以 97 是质数。再数一数不超过 97 的质数:2、3、5……97,共 25 个,因此 97 是第 25 个质数:$$\text{primeIndex} = 25$$
常见问题
1 是质数吗?不是。按照定义,质数必须大于 1,所以 1 既不是质数,也不是合数。
唯一的偶质数是哪个?2 是唯一的偶质数;其他所有偶数都能被 2 整除。
第 100 个质数是多少?\(\text{Prime}[100] = 541\)。其他参考值:\(\text{Prime}[10] = 29\)、\(\text{Prime}[25] = 97\)、\(\text{Prime}[50] = 229\)、\(\text{Prime}[223] = 1409\)。