diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-08-11 18:42:52 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-08-11 18:42:52 +0200 |
| commit | 7b624de8e3e3637a07364f992c1d7e4185e4a872 (patch) | |
| tree | fdb9b0c3f9185b267f9f7bfb9cb4b0e4cdd8cc16 /helper/prime.py | |
| download | project_euler-7b624de8e3e3637a07364f992c1d7e4185e4a872.tar.gz project_euler-7b624de8e3e3637a07364f992c1d7e4185e4a872.tar.bz2 project_euler-7b624de8e3e3637a07364f992c1d7e4185e4a872.zip | |
initial commit
Diffstat (limited to 'helper/prime.py')
| -rw-r--r-- | helper/prime.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/helper/prime.py b/helper/prime.py new file mode 100644 index 0000000..1107c7c --- /dev/null +++ b/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 |
