前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【leetcode刷题】T48-计数质数

【leetcode刷题】T48-计数质数

作者头像
木又AI帮
修改2019-07-18 10:05:39
4890
修改2019-07-18 10:05:39
举报
文章被收录于专栏:木又AI帮

【英文题目】(学习英语的同时,更能理解题意哟~)

Count the number of prime numbers less than a non-negative number, n.

Example:

代码语言:javascript
复制
Input: 10
Output: 4
Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.

【中文题目】

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

示例:

代码语言:javascript
复制
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

【思路】

第一种方法,暴力破解,遍历每个小于n的数,判断其是否为质数,时间复杂度太高。

第二种方法,使用数组。给每个数一个标签True(0和1的标签为False),遍历数组时,若标签为True,表明该数是质数,将其倍数全部标记为False(相当于改变了所有非质数的标签)。最后统计True的个数即可。循环时,i*i<=n时,不用再继续遍历,因为所有非质数的标签已经更改。

【代码】

python版本

代码语言:javascript
复制
class Solution(object):
    def countPrimes(self, n):
        """
        :type n: int
        :rtype: int
        """
        ls = [True] * n
        if n < :
            return 
        ls[] = ls[] = False
        for i in range(, int(n ** 0.5)+):
            if ls[i] == False:
                continue
            for j in range( * i, n, i):
                ls[j] = False
        return sum(ls)

C++版本

代码语言:javascript
复制
class Solution {
public:
    int countPrimes(int n) {
        vector<int> ls(n, );
        if(n < )
            return ;
        ls[] = , ls[] = ;
        for(int i=; i * i <= n; i++){
            if(ls[i] == )
                continue;
            for(int j=*i; j < n; j=j+i)
                ls[j] = ;
        }
        int sum = ;
        for(int i=; i<n; i++)
            sum += ls[i];
        return sum;
    }
};

给我好看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档