aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-082/lubos-kolouch/python/ch-1.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/challenge-082/lubos-kolouch/python/ch-1.py b/challenge-082/lubos-kolouch/python/ch-1.py
new file mode 100644
index 0000000000..aa3e52865b
--- /dev/null
+++ b/challenge-082/lubos-kolouch/python/ch-1.py
@@ -0,0 +1,45 @@
+#!/bin/env python
+"""
+#===============================================================================
+#
+# FILE: ch-1.py
+#
+# USAGE: ./ch-1.py
+#
+# DESCRIPTION: Perl Weekly Challenge 082
+# http://www.perlweeklychallenge.org
+# Task 1 - Common Factors
+#
+# AUTHOR: Lubos Kolouch
+# CREATED: 10/15/2020 07:25:23 PM
+#===============================================================================
+"""
+import math
+
+
+def get_common_factors(numbers):
+
+ # 1 is always factor
+ common_factors = [1]
+
+ # it's enough to to go sqrt of one of the numbers
+ for i in range(2, int(math.sqrt(numbers['first'])+1)):
+ if numbers['first'] % i != 0:
+ continue
+
+ # add to solution if it is factor of the second number
+ if numbers['second'] % i == 0:
+ common_factors.append(i)
+
+ # the same for the "other factor"
+ other_factor = numbers['first'] // i
+ if numbers['second'] % other_factor == 0:
+ common_factors.append(other_factor)
+
+ common_factors.sort(key=int)
+ return common_factors
+
+
+assert get_common_factors({'first': 12, 'second': 18}) == [1, 2, 3, 6]
+assert get_common_factors({'first': 18, 'second': 23}) == [1]
+assert get_common_factors({'first': 1, 'second': 1}) == [1]