统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
埃拉托斯特尼筛法
筛选的主要方法
1.划去2的倍数;
2.划去3的倍数;
3 划去5的倍数;(4的倍数同为2的倍数,已被划去)
4.划去7的倍数;(6的倍数同为3的倍数,已被划去)
5.划去11的倍数;(8和10的倍数同为2的倍数,而9的倍数也是3的倍数)
所以验证一个数是否是素数,可以用它来除以2,3,5,7,11。
埃拉托斯特尼筛法
?
。)
func countPrimes(n int) int {
if n < 3 {
return 0
}
flag := make([]bool,n)
num:=n/2
for i:=3;i*i<n ;i+=2 {
if flag[i] {
continue
}
for j:=i*i;j<n ;j+=2*i {
if !flag[j] {
num--;
flag[j]=true
}
}
}
return num
}