2021-10-25:计数质数。统计所有小于非负整数 n 的质数的数量。力扣204。

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-10-25:计数质数。统计所有小于非负整数 n 的质数的数量。力扣204。相关的知识,希望对你有一定的参考价值。

2021-10-25:计数质数。统计所有小于非负整数 n 的质数的数量。力扣204。

福大大 答案2021-10-25:

自然智慧即可。从i从3开始遍历,每次加2,i*i<n。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
    n := 12
    ret := countPrimes(n)
    fmt.Println(ret)
}

func countPrimes(n int) int {
    if n < 3 {
        return 0
    }
    // j已经不是素数了,f[j] = true;
    f := make([]bool, n)
    count := n / 2 // 所有偶数都不要,还剩几个数
    // 跳过了1、2    3、5、7、
    for i := 3; i*i < n; i += 2 {
        if f[i] {
            continue
        }
        // 3 -> 3 * 3 = 9   3 * 5 = 15   3 * 7 = 21
        // 7 -> 7 * 7 = 49  7 * 9 = 63
        // 13 -> 13 * 13  13 * 15
        for j := i * i; j < n; j += 2 * i {
            if !f[j] {
                count--
                f[j] = true
            }
        }
    }
    return count
}

执行结果如下:


左神java代码

以上是关于2021-10-25:计数质数。统计所有小于非负整数 n 的质数的数量。力扣204。的主要内容,如果未能解决你的问题,请参考以下文章

204. 计数质数

LeetCode. 计数质数

[LeetCode] 204. 计数质数

代码题— 统计所有小于非负整数 n 的质数的数量

leetcode 简单 第五十八题 计数质数

204计数质数