【leetcode】204. Count Primes(Python & C++)
来源:互联网 发布:kingroot是什么软件 编辑:程序博客网 时间:2024/06/05 09:32
204. Count Primes
题目链接
204.1 题目描述:
Description:
Count the number of prime numbers less than a non-negative number, n.
204.2 解题思路:
思路一:分两步:第一步判断一个数是否是质数,第二步求出小于n的质数有多少。(结果超时)
- 判断是否是质数:以i循环n,起始位置是2,结束位置是n的平方根。如果n%i==0,说明可以整除,不是质数,直接返回false。循环结束,返回true。
- 求出小于n的质数的个数:如果n小于3,则返回0。计数器count初始化为1(2是质数)。以i循环n,起始位置是3,结束位置是n-1,每次i+2(偶数直接排除不是质数)。调用判断质数的函数,如果返回true,则计数器count++。最后返回count。
思路二:首先如果n小于3,则返回0。计数器count初始化为1(2是质数)。设置一个大小为n的数组v,里面都放的是true,这个数组表示从1到n-1中是否是质数。默认true是质数。以i循环n,起始位置是3,终止位置是n-1,每次i+2(偶数直接排除不是质数)。如果v[i]是true,则count++。如果i大于了n的平方根,则continue,不必进行该循环后面的操作。进入判断是否是质数循环,以k循环n,起始位置是i*i(表示第一个不是质数的位置),结束位置是n-1,每次k+i(每次i的倍数都不是质数),将v[k]=false,即设为不是质数的标识。最后返回count。这种思想是边统计质数的个数,边计算是否是质数。
204.3 C++代码:
1、思路一代码(超时):
class Solution129 {//超时public: bool isprime(int n) { int j = sqrt(n); for (int i = 2; i <= j;i++) { if (n%i == 0) return false; } return true; } int countPrimes(int n) { if (n <= 2) return 0; int count = 1; for (int i = 3; i < n;i+=2) { if (isprime(i)) count++; } return count; }};
2、思路二代码(22ms)
class Solution129_1 {public: int countPrimes(int n) { if (n < 3) return 0; int count = 1; vector<bool>v(n, true); int j = sqrt(n); for (int i = 3; i < n;i+=2) { if (v[i]) { count++; if (i>j) continue; for (int k = i*i; k < n; k += i) v[k] = false; } } return count; }};
204.4 Python代码:
2、思路二代码(852ms)
class Solution(object): def countPrimes(self, n): """ :type n: int :rtype: int """ if n<3: return 0 a=[True]*n j=int(math.sqrt(n)) count=1 i=3 while i<n: if a[i]==True: count+=1 if i>j: i+=2 continue k=i*i while k<n: a[k]=False k+=i i+=2 return count
阅读全文
0 0
- 【leetcode】204. Count Primes(Python & C++)
- LeetCode--Count Primes(素数个数)Python
- 【LeetCode】204.Count Primes
- [leetcode] 204.Count Primes
- LeetCode 204. Count Primes
- Leetcode 204. Count Primes
- [LeetCode]204. Count Primes
- 204. Count Primes LeetCode
- LeetCode *** 204. Count Primes
- LeetCode 204. Count Primes
- leetcode-204. Count Primes
- LeetCode-204.Count Primes
- Leetcode 204. Count Primes
- 【leetcode】204. Count Primes
- [Leetcode]204. Count Primes
- LeetCode 204. Count Primes
- [leetcode] 204. Count Primes
- 204.[LeetCode]count primes
- 44. 数据结构笔记之四十四弗洛伊德Floyd算法
- 字符串格式化-format()
- MVC模型 跟DAO模型的初步认识
- 大三的两场面试下来,我决定回学校读书
- filebeat浅析
- 【leetcode】204. Count Primes(Python & C++)
- 类的分类与接口的继承
- Unity 使用JSON实现本地数据保存和读取
- Python 对话框
- 45. 数据结构笔记之四十五克鲁斯卡尔算法
- 小米手机调试Installation failed with message Failed to establish session
- Python脚本后台运行的几种方式
- 负margin对元素高度的影响
- python之map、reduce函数小试