点击上方“专知”,关注获取专业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 专知
专 · 知
关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法、深度干货等内容。扫一扫下方关注我们的微信公众号。
点击“阅读原文”,使用专知!