其他分享
首页 > 其他分享> > 【数学问题】力扣204:计数质数(未完)

【数学问题】力扣204:计数质数(未完)

作者:互联网

给定整数 n ,返回 所有小于非负整数 n 的质数的数量

示例:

输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

厄拉多塞筛法(Sieve of Eratosthenes),简称埃氏筛法,是非常常用的、判断一个整数是否是质数的方法。并且它可以在判断一个整数 n 时,同时判断所小于 n 的整数,因此非常适合这道题。其原理也十分易懂:从 1 到 n 遍历,假设当前遍历到 m,则把所有小于 n 的、且是 m 的倍数的整数标为和数;遍历完成后,没有被标为和数的数字即为质数。

如果 x 是质数,那么大于 x 的 x 的倍数 2x、3x、… 一定不是质数,因此可以从这里入手。

哪里错了??

class Solution:
    def countPrimes(self, n: int) -> int:
        if n < 2: return 0
        isPrime = [1] * n
        res = 0
        for i in range(2, n):
            if isPrime[i] == 1:
                res += 1
            j = i * i
            while i * i < n:
                isPrime[j] = 0
                j += i
        return res

标签:遍历,204,标记,质数,力扣,倍数,isPrime,合数
来源: https://www.cnblogs.com/Jojo-L/p/16100788.html