diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-08-12 15:47:31 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-08-12 15:47:31 +0200 |
| commit | bb515e51d67f37ba9c6dfbd2fd0930be873a5ada (patch) | |
| tree | e86abea100d2c02a5dad7b6d5f0bf29c307bae04 /python/helper/prime.py | |
| parent | 1879caa1dd80cb11dd62403663917ad4bf7cc68e (diff) | |
| download | project_euler-bb515e51d67f37ba9c6dfbd2fd0930be873a5ada.tar.gz project_euler-bb515e51d67f37ba9c6dfbd2fd0930be873a5ada.tar.bz2 project_euler-bb515e51d67f37ba9c6dfbd2fd0930be873a5ada.zip | |
haskell problems 007 -> 010
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 |
