Advertisement
neongm

isprime pypython

Oct 21st, 2019
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. from multiprocessing import Process
  2. from random import randint
  3. from time import time
  4. #import numpy as np
  5. x = 0
  6.  
  7.  
  8. def isprime(n):
  9.     if n%2==0 or n%3==0 or n%5==0 or n==1: return(False)
  10.     for i in range(7, 10000, 2):
  11.         if n%i==0: return False
  12.     return True
  13.  
  14.  
  15. def isprime_ferm(n):
  16.     #if isprime(n):
  17.         for i in range(1):
  18.             a = randint(2,n-1)
  19.             r = a**(n-1)%n
  20.             if r != 1:
  21.                 print('neaet')
  22.                 return(False)
  23.         print('truae')
  24.         return(True)
  25.  
  26.  
  27. def itstimetostop():
  28.     global x
  29.     x = 1
  30.  
  31. #
  32. # def fnmp(num,s,e):
  33. #     t = time()
  34. #     if s%2==0:
  35. #         s-=1
  36. #     elif s==2: s=3
  37. #
  38. #     np.arange(s, e, 2)
  39. #
  40. #
  41. #     print('                 ', time() - t, 'sec','true')
  42. #
  43.  
  44. def f(num,s,e):
  45.     t = time()
  46.     if num%2==0:
  47.         print('                 ', time() - t, 'sec', 'false')
  48.         itstimetostop()
  49.         return False
  50.  
  51.     if s==2:
  52.         s+=1
  53.     elif s%2==0: s-=1
  54.  
  55.     for i in range(s,e,2):
  56.         if num%i==0:
  57.             itstimetostop()
  58.             break
  59.     itstimetostop()
  60.     print('                 ', time() - t, 'sec','true')
  61.  
  62.  
  63. def divide(n, p=4):                                            # p = кол-во потоков
  64.     parts = []
  65.     n = int(n**0.5)
  66.     for i in range(1, p+1):
  67.         part = int(n / p * i)
  68.         parts.append(part)
  69.     return parts
  70.  
  71.  
  72.  
  73. if __name__ == '__main__':
  74.     threads = []
  75.     num = 878761296072214601           #878761296072214601
  76.     print(len(str(num)))
  77.     parts = divide(num)
  78.  
  79.  
  80.     for i in range(len(parts)):
  81.         if i != 0:
  82.             s = e
  83.             e = parts[i]
  84.         else:
  85.             s = 2
  86.             e = parts[0]
  87.         p = Process(target=f, args=(num,s,e))
  88.         threads.append(p)
  89.         p.start()
  90.         print(p)
  91.  
  92.     for pr in threads:
  93.         p.join()
  94.         print(pr)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement