aboutsummaryrefslogtreecommitdiff
path: root/helper/prime.py
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-08-11 18:42:52 +0200
committerCharles <sircharlesaze@gmail.com>2019-08-11 18:42:52 +0200
commit7b624de8e3e3637a07364f992c1d7e4185e4a872 (patch)
treefdb9b0c3f9185b267f9f7bfb9cb4b0e4cdd8cc16 /helper/prime.py
downloadproject_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.py41
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