【LeetCode 204】关关的刷题日记39 Count Primes

点击上方“专知”,关注获取专业AI知识”

关关的刷题日记39–Leetcode 204. Count Primes

题目

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

题目的意思是让求小于n的素数的个数。

方法1:本来最简单的想法是遍历3到的数,都不是n的约数的就是素数,反之就是合数,结果超时了。后来师父给指点了下:如果一个数是合数的话,那么肯定有质因子,所以实际上我们只需要遍历3到 之间的素数就可以了。

class Solution {public:    int countPrimes(int n) {        if(n<3)            return 0;        int re=0;        vector<int>primes;        primes.push_back(2);        for(int i=3; i<n; i=i+2)        {            int flag=1;            for(int x:primes)            {                if(x*x>n)                    break;                if(i%x==0)                {                    flag=0;                    break;                }            }            if(flag)                primes.push_back(i);        }        return primes.size();    }};

方法二:厄拉多塞筛法求素数。看了一下网上这一篇博客介绍得很好:http://blog.csdn.net/tsbyj/article/details/47254069,大家可以参考下。

class Solution {public:    int countPrimes(int n) {        if(n<3)            return 0;        int re=0;        vector<int>primes(n,1);        for(int i=2; i*i<n; ++i)        {            if(primes[i]==1)            {                for(int j=i; j*i<n; ++j)                {                    primes[i*j]=0;                }            }        }        for(int x:primes)        {            re+=x;        }        return re-2;    }};

人生易老,唯有陪伴最长情,加油!

以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。

专知网站查看Leetcode刷题日记:

请登录www.zhuanzhi.ai或者点击阅读原文,顶端搜索“Leetcode” 主题,取查看获得专知Leetcode所有资源!如下图所示~


群满,请扫描小助手,加入专知-LeetCode学习交流群,交流分享~


欢迎转发到你的微信群和朋友圈,分享专业AI知识!


-END-

欢迎使用专知

专知,一个新的认知方式!专注在人工智能领域为AI从业者提供专业可信的知识分发服务, 包括主题定制、主题链路、搜索发现等服务,帮你又好又快找到所需知识。


使用方法>>访问www.zhuanzhi.ai, 或点击文章下方“阅读原文”即可访问专知

中国科学院自动化研究所专知团队

@2017 专知

专 · 知

关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法、深度干货等内容。扫一扫下方关注我们的微信公众号。

点击“阅读原文”,使用专知

展开全文
Top
微信扫码咨询专知VIP会员