Skip to content

Instantly share code, notes, and snippets.

@lagagain
Created December 5, 2019 04:51
Show Gist options
  • Select an option

  • Save lagagain/c7c0276b97ab71d2ee5c22118130be30 to your computer and use it in GitHub Desktop.

Select an option

Save lagagain/c7c0276b97ab71d2ee5c22118130be30 to your computer and use it in GitHub Desktop.
class Solution:
prime_numbers = [2,3,5,7,11,13,17,19,23,29,31]
def countPrimes(self, n: int) -> int:
return Solution.countPrime(n)
@staticmethod
def countPrime(n: int):
if n <= 2: return 0
m = Solution.prime_numbers[-1]
while n > m:
m += 2
prime_p = True
for prime in Solution.prime_numbers:
if m % prime == 0:
prime_p = False
break
if prime_p: Solution.prime_numbers.append(m)
p = len(Solution.prime_numbers)
if Solution.prime_numbers[p-1] < n:
return p
l = 0
while not (Solution.prime_numbers[p-1] >= n and Solution.prime_numbers[p-2] < n):
t = ((p - l) // 2) + l
print(f"p:{p}, l:{l}, t:{t} => {Solution.prime_numbers[t]}")
if Solution.prime_numbers[t] > n:
p = t+1
elif Solution.prime_numbers[t] == n:
p = t+1
break
else:
l = t
return p-1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment