计数质数 go实现

统计所有小于非负整数 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
}

猜你喜欢

转载自blog.csdn.net/s15738841819/article/details/84399807
今日推荐