当然可以将每个数依次进行判断,得出质数表,这里讲一种比较高效的算法:埃氏筛法。将 222 到 nnn 之间的整数存在一个 bool 数组中,先全部标记为 true,从 222 开始,把 222 的倍数全部标记为 false,再往下循环,发现下一个质数是 333,再把 333 的倍数全部标记为 false,再往下循环,发现下一个质数是 555,再把 555 的倍数全部标记为 false,以此类推,便能把范围内的质数筛出来,过程中把质数存在数组中,便能得到第 nnn 个质数。
经计算,第 202520252025 个质数在 200002000020000 以内,只要把 200002000020000 以内的质数筛出来即可。
时间复杂度是一个常数,数量级为 10410^4104 。
代码如下: