Suppenbiatch

prime factorizor

Apr 9th, 2020
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.95 KB | None | 0 0
  1. import math
  2. from re import sub as sub_from_string
  3.  
  4.  
  5. def is_prime(num_to_test: int):
  6.     for i in range(2, int(math.sqrt(num_to_test) + 2)):
  7.         if num_to_test % i == 0:
  8.             return False
  9.     return True
  10.  
  11.  
  12. def next_prime(last_prime: int):
  13.     next_test = last_prime + 1
  14.     while True:
  15.         if is_prime(next_test):
  16.             return next_test
  17.         else:
  18.             next_test += 1
  19.  
  20.  
  21. num_to_fac = input('Num to factorize: \n')
  22. num_to_fac = int(sub_from_string('[^0-9]', '', num_to_fac))
  23. test_prime = 2
  24. prime_factors = []
  25. output_num = num_to_fac
  26.  
  27. while True:
  28.     mod = divmod(num_to_fac, test_prime)
  29.     if mod[1] == 0:
  30.         prime_factors.append(test_prime)
  31.         num_to_fac = mod[0]
  32.     else:
  33.         test_prime = next_prime(test_prime)
  34.     if is_prime(num_to_fac):
  35.         prime_factors.append(int(num_to_fac))
  36.         break
  37.  
  38. print(output_num, 'has the following prime factors:')
  39. print(prime_factors)
  40. exit('DONE')
Add Comment
Please, Sign In to add comment