LeetCode--Count Primes(素数个数)Python
2017-12-03 16:35
453 查看
题目:
计算n以内的素数个数。
解题思路:
1、首先考虑直接判断n以内的每个数是否为素数。再对结果进行求和。判断某个数是否为素数的方法,之间判断该数能否整除从2到sqrt(n)的数字。若能则是素数,否则不是素数。复杂度为n*sqrt(n)。但在LeetCode会超时。
代码(Python):
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
if n==0:
return 0
def IsPrime(n):
sqrt_n = int(n**0.5)
for i in range(2,sqrt_n+1):
if (n%i)==0:
return 0
return 1
count = 0
for i in range(2,n):
count+=IsPrime(i)
return count
2、改变判断某数是否为素数的方式,判断该数能否整除从2到sqrt(n)的素数。在LeetCode也会超时
3、在网上查找到的解题思路,降低了复杂度。厄拉多塞筛法。可以AC
链接:http://blog.csdn.net/github_39261590/article/details/73864039
代码(Python):
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
if n<2:
return 0
output = [True]*(n-1)
output[0:1] = [False]*2
sqrt_n = int(n**0.5+1)
for i in range(sqrt_n):
if output[i]:
output[i*i:n:i]=[False]*len(output[i*i:n:i])
return sum(output)
计算n以内的素数个数。
解题思路:
1、首先考虑直接判断n以内的每个数是否为素数。再对结果进行求和。判断某个数是否为素数的方法,之间判断该数能否整除从2到sqrt(n)的数字。若能则是素数,否则不是素数。复杂度为n*sqrt(n)。但在LeetCode会超时。
代码(Python):
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
if n==0:
return 0
def IsPrime(n):
sqrt_n = int(n**0.5)
for i in range(2,sqrt_n+1):
if (n%i)==0:
return 0
return 1
count = 0
for i in range(2,n):
count+=IsPrime(i)
return count
2、改变判断某数是否为素数的方式,判断该数能否整除从2到sqrt(n)的素数。在LeetCode也会超时
class Solution(object): def countPrimes(self, n): """ :type n: int :rtype: int """ Prime = [] flag = 0 for i in range(2,n): if Prime==[]: Prime.append(i) continue for j in range(len(Prime)): if Prime[j]*Prime[j]>i: flag = 0 break if i%Prime[j]==0: flag = 1 break if flag==1: flag = 0 continue else: Prime.append(i) return len(Prime)
3、在网上查找到的解题思路,降低了复杂度。厄拉多塞筛法。可以AC
链接:http://blog.csdn.net/github_39261590/article/details/73864039
代码(Python):
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
if n<2:
return 0
output = [True]*(n-1)
output[0:1] = [False]*2
sqrt_n = int(n**0.5+1)
for i in range(sqrt_n):
if output[i]:
output[i*i:n:i]=[False]*len(output[i*i:n:i])
return sum(output)
相关文章推荐
- LeetCode: Count Primes(计算n以内素数个数:高效算法)
- <LeetCode><Easy> 204 Count Primes --找素数/质数 (?)
- leetcode-Count Primes 以及python的小特性
- [LeetCode 204] Count Primes(Python)
- leetcode Count Primes 素数个数
- LeetCode Count Primes 求素数个数(埃拉托色尼筛选法)
- Python 刷题日记:LeetCode 204: Count Primes
- [LeetCode] Count Primes - 素数系列问题
- (LeetCode)Count Primes --- 统计素数(质数)
- leetcode Count Primes 统计 素数 个数 超时 解决方案
- [LeetCode 204] Count Primes
- hdu 5901 Count primes (大素数模板)
- leetcode-204-Count Primes
- LeetCode-38-Count and Say Python的int_to_string
- LeetCode ||Count Primes
- Leetcode 204 Count Primes
- (待更新理解)(数值过大素数计数模版)HDU 5901 Count primes
- leetcode--Count Primes
- [LeetCode] Count Primes(Java)
- leetcode[204]:Count Primes