统计素数个数基于Go

  • 暴力破解
func isPrime(n int) bool{
	for i:=2;i*i<=n;i++{
		if n%i==0{
			return false
		}
	}
	return true
}

func bf(n int)int{
	sum := 0
	for i:=2;i<n;i++{
		if isPrime(i){
			sum++
		}
	}
	return sum
}
  • 埃筛法(埃式筛选法)
func eratostheness(n int)int{
	var isComposite = make([]bool, n)
	var count = 0
	for i:=2;i<n;i++{
		// 如果i是质数
		if !isComposite[i]{
			count++
			// i*i, ..., 4*i, 5*i...均为合数
			for j:=i*i;j<n;j+=i{
				isComposite[j] = true
			}
		}
	}
	return count
}
posted @ 2021-04-07 14:17  pangqianjin  阅读(59)  评论(0编辑  收藏  举报