aboutsummaryrefslogtreecommitdiff
path: root/python/helper/prime.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/helper/prime.py')
-rw-r--r--python/helper/prime.py41
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