求质数/素数
素数的定义:>1的只能被0和自身整数的数。
我们拿下面这道求素数模板题举例,介绍三种求素数的方法:
868. 筛质数 - AcWing题库
暴力 也叫试除筛法
12/4=3
,3和4就是12的因数,因数都是成对出现的。可以表示为:d1,d2。因此可以得出公式:
d2=n/d1
又因为 3<4。
所以得出d2<=d1
我们也可以表示为:
d2<=n/d2
延申为:
d2<=n
d<=√n
因此我们求素数的时候就可以不枚举到n本身,可以枚举到 √n即可,或者 n/d即可:

时间复杂度:遍历一遍数组O(n),判断是否是素数O(√n),总共O(n√n)
埃氏筛法
删掉2的倍数,3的倍数,5的倍数,剩下的就是质数。

证明

code

时间复杂度:
n/2+n/3+n/n=n(1/2+1/3+……+1/n)
=nlongn
线性筛法