zoukankan      html  css  js  c++  java
  • leetcode-easy-math-204 Count Primes-NO

    mycode     time limited

    class Solution(object):
        def countPrimes(self, n):
            """
            :type n: int
            :rtype: int
            """
            if n < 3: return 0
          
            def is_primes(x):
                for i in range(2,x):
                    if x % i == 0:
                        return False
                return True
            
            count = 0
        
            for i in range(2,n):
                if is_primes(i) :
                    print(i)
                    count += 1 
            return count
                

    参考 

    1  

    class Solution(object):
        def countPrimes(self, n):
            """
            :type n: int
            :rtype: int
            """
            if n <= 2:
                return 0
            
            prime = [1] * n
            prime[0] = prime[1] = 0
            
            for index in range(2, n):
                if prime[index] == 1:
                    time = 2
                    while index * time < n:
                        prime[index * time] = 0
                        time += 1
                        
            return sum(prime)    

    2

    class Solution:
        def countPrimes(self, n: int) -> int:
            if n < 2: return 0
            
            prime = [1]*n
            
            for i in range(2,int(n*0.5)+1):
                prime[i*i:n:i] = [0] * len(prime[i*i:n:i])
            
            return sum(prime)-2 #-2 because 0 and 1 is not a prime number

    更快优化

    import math
    
    class Solution(object):
        def countPrimes(self, n):
            """
            :type n: int
            :rtype: int
            """
            
            if n < 2:
                return 0
            s = [1] * n
            s[0] = s[1] = 0
            for i in range(2, int(n ** 0.5) + 1):
                if s[i] == 1:
                    s[i*i:n:i] = [0] * int((n-i*i-1)/i + 1)               
            return sum(s)

    time limited

    class Solution(object):
        def countPrimes(self, n):
            """
            :type n: int
            :rtype: int
            """
            count = 0
            for i in range(2,n):
                count += self.isPrime(i)     
            return count
    
        def isPrime(self,x):
            x_= int(x**0.5+1)
            for i in range(2,x_):
                if x % i == 0:
                    return 0
            return 1
  • 相关阅读:
    算法经典文章收藏
    Python 学习文章收藏
    Leetcode 刷题计划
    CLR via C# 学习计划
    算法导论 学习计划
    算法导论学习笔记 一 分治算法
    Mongodb 学习笔记
    Python模拟HttpRequest的方法总结
    在Github上搭建自己的博客(Windows平台)
    Git Shell 基本命令(官网脱水版)
  • 原文地址:https://www.cnblogs.com/rosyYY/p/11003960.html
Copyright © 2011-2022 走看看