Advertisement
DigitalMag

the fastest approach to find prime digits (for big digits)

Jul 5th, 2020
1,132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.29 KB | None | 0 0
  1. import time
  2. from numba import jit
  3.  
  4. isprime = lambda number: all(number % i for i in range(2, number))
  5.  
  6. @jit(nopython=True)
  7. def is_prime(number):
  8.     n = number
  9.     counter = 0
  10.     for i in range(1, n + 1):
  11.         if n % i == 0:
  12.             counter += 1
  13.     return True if counter == 2 else False
  14.  
  15. @jit(nopython=True)
  16. def issimple(n):# получаем число
  17.     d=2 # олучить остаток от деления на 2, значит - простое
  18.     while n % d!=0:# пока число mod 2<>0 переберем делители, так как , простое, делится неа 2 и на себя,
  19.         d+=1# перебрасываем все, кроме 2
  20.     return d==n # возвращаем результат
  21.  
  22. # @jit(nopython=True)
  23. def get_primes(start, edge):
  24.     primes = []
  25.  
  26.     for i in range(start, edge):
  27.         if i % 10 == 0: print('step ',i)
  28.         if issimple(i): primes.append(i)
  29.  
  30.     return primes
  31.  
  32.  
  33. def main():
  34.  
  35.     issimple(3)
  36. ##    print(3)
  37. ##    get_primes(0, 3)
  38.  
  39.     r = (97999797, 97999997)
  40.     print(r[-1]-r[0])
  41.  
  42.     t = time.clock()
  43.  
  44.     rez = get_primes(*r)
  45.     print ("primes: "+len(rez).__str__(), ' for ', (time.clock() - t))
  46.  
  47.     print(rez, ' for ', (time.clock() - t))
  48.  
  49. if __name__ == '__main__':
  50.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement