diff options
Diffstat (limited to 'python/helper/prime.py')
| -rw-r--r-- | python/helper/prime.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/python/helper/prime.py b/python/helper/prime.py new file mode 100644 index 0000000..1107c7c --- /dev/null +++ b/python/helper/prime.py @@ -0,0 +1,41 @@ +from math import floor, sqrt +from itertools import count + + +def is_prime(number): + if number == 1: + return False + + if number == 2: + return True + if number > 2 and number % 2 == 0: + return False + + boundary = floor(sqrt(number)) + 1 + for div in range(3, boundary, 2): + if number % div == 0: + return False + return True + + +def primes_until(max_range): + for x in range(2, max_range): + if is_prime(x): + yield x + + +def primes_loop(): + for i in count(2): + if is_prime(i): + yield i + + +def get_prime_factors(num): + factors = [] + while num > 1: + for i in primes_loop(): + if num % i == 0: + factors.append(i) + num = num // i + break + return factors |
