204.count-primes.go 331 B

1234567891011121314151617181920212223
  1. import (
  2. "math"
  3. )
  4. func countPrimes(n int) int {
  5. notPrime := make([]bool, n+1)
  6. sqrtN := int(math.Sqrt(float64(n)))
  7. for k := 2; k <= sqrtN; k++ {
  8. if notPrime[k] {
  9. continue
  10. }
  11. for m := 2*k; m < n; m += k {
  12. notPrime[m] = true
  13. }
  14. }
  15. cnt := 0
  16. for i := 2; i < n; i++ {
  17. if !notPrime[i] {
  18. cnt++
  19. }
  20. }
  21. return cnt
  22. }