leetcode刷题笔记 二百零四题 计数质数

leetcode刷题笔记 二百零四题 计数质数

源地址:204. 计数质数

问题描述:

统计所有小于非负整数 n 的质数的数量。

示例:

输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
//本题使用了厄拉多塞筛法 对范围内每个质数的倍数标记为false,访问过程中跳过
object Solution {
    def countPrimes(n: Int): Int = {
        var count = 0
        val primes = Array.fill(n)(true)
        
        for(i <- 2 to n-1) {
            if (primes(i) == true){
                count += 1
                
                //取i的倍数进行去除,最小为2倍
                var j = 2 * i
                while (j < n) {
                    primes(j) = false
                    j += i
                }
            }
        }
        return count
    }
}
posted @ 2020-09-23 11:51  ganshuoos  阅读(120)  评论(0编辑  收藏  举报