如果你想要判断一个数字是否是质数,你该怎么办呢?
首先,我们要先知道质数的定义是什么:
质数是指,在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
那么我们很简单就能编辑出我们的最初版判断素数函数:【我们以欧拉第七题举例,输出第10001个素数】
很多数字标记了好几次,有不必要的时间开销。
15这个数字,我们在3里面标记了一次;5里面也标记了一次。
所以,我们还能继续简化:
也就是从2 * n一直到n的最小质因数 * n
从2开始,到2的最小质因数2。
也就是只标记一个2*2,等于4。
对于3,从2开始标记,标记到3的最小质因数3。
对于4,我们从2开始标记,标记到4的最小质因数2。
对于7,同理,标记14,21,35(但是我们只以前30个举例子,你可以理解为MAXN=30。后续将不再进行超出30的举例)
然后我们发现,所有合数只被标记了一次,我们就得到了下面的素数表:
上代码!