aboutsummaryrefslogtreecommitdiff
path: root/python/047-distinct_primes_factors.py
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-01-14 14:30:56 +0100
committerCharles Cabergs <me@cacharle.xyz>2021-01-14 14:30:56 +0100
commitf588a2e670f9cd92590ee535619168ca933b8098 (patch)
tree3ce32c02c529dd7deef54443597156b521c2342b /python/047-distinct_primes_factors.py
parent41b7f521b911e48b80286df701186f18d2bfdff3 (diff)
downloadproject_euler-f588a2e670f9cd92590ee535619168ca933b8098.tar.gz
project_euler-f588a2e670f9cd92590ee535619168ca933b8098.tar.bz2
project_euler-f588a2e670f9cd92590ee535619168ca933b8098.zip
problem 47 in python
Diffstat (limited to 'python/047-distinct_primes_factors.py')
-rw-r--r--python/047-distinct_primes_factors.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/python/047-distinct_primes_factors.py b/python/047-distinct_primes_factors.py
new file mode 100644
index 0000000..30b76bc
--- /dev/null
+++ b/python/047-distinct_primes_factors.py
@@ -0,0 +1,49 @@
+###
+# Distinct primes factors
+# Problem 47
+#
+# The first two consecutive numbers to have two distinct prime factors are:
+#
+# 14 = 2 × 7
+# 15 = 3 × 5
+#
+# The first three consecutive numbers to have three distinct prime factors are:
+#
+# 644 = 2² × 7 × 23
+# 645 = 3 × 5 × 43
+# 646 = 2 × 17 × 19.
+#
+# Find the first four consecutive integers to have four distinct prime factors each. What is the first of these numbers?
+###
+
+
+import itertools
+
+
+# from: https://en.wikipedia.org/wiki/Trial_division
+def count_prime_factors(num):
+ factors = []
+ if num % 2 == 0:
+ factors.append(2)
+ while num % 2 == 0:
+ num //= 2
+ f = 3
+ while f * f <= num:
+ if num % f == 0:
+ if not f in factors:
+ factors.append(f)
+ num //= f
+ else:
+ f += 2
+ if num != 1:
+ factors.append(num)
+ return len(factors)
+
+
+for n in itertools.count(1):
+ if (count_prime_factors(n) == 4 and
+ count_prime_factors(n + 1) == 4 and
+ count_prime_factors(n + 2) == 4 and
+ count_prime_factors(n + 3) == 4):
+ print(n)
+ break