aboutsummaryrefslogtreecommitdiff
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
parent41b7f521b911e48b80286df701186f18d2bfdff3 (diff)
downloadproject_euler-f588a2e670f9cd92590ee535619168ca933b8098.tar.gz
project_euler-f588a2e670f9cd92590ee535619168ca933b8098.tar.bz2
project_euler-f588a2e670f9cd92590ee535619168ca933b8098.zip
problem 47 in python
-rw-r--r--python/047-distinct_primes_factors.py49
-rw-r--r--python/wip/047-distinct_primes_factors.py20
-rw-r--r--python/wip/049-prime_permutations.py23
3 files changed, 49 insertions, 43 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
diff --git a/python/wip/047-distinct_primes_factors.py b/python/wip/047-distinct_primes_factors.py
deleted file mode 100644
index ac09b9a..0000000
--- a/python/wip/047-distinct_primes_factors.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from itertools import count
-from helper.prime import get_prime_factors, primes_loop
-
-# TROP LENT
-
-def as_four_distinct_prime_factors(num):
- return len(set(get_prime_factors(num))) == 3
-
-def check_next_three(num):
- for i in range(1, 3):
- if not as_four_distinct_prime_factors(num + i):
- return False
- return True
-
-
-for num in primes_loop():
- if as_four_distinct_prime_factors(num):
- if check_next_three(num):
- print(num)
- break
diff --git a/python/wip/049-prime_permutations.py b/python/wip/049-prime_permutations.py
deleted file mode 100644
index d90754e..0000000
--- a/python/wip/049-prime_permutations.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from itertools import permutations
-from helper.prime import is_prime
-
-
-def constant_inscrease(perms):
-
-
-
-def get_prime_permutations(nb):
- return sorted([
- int(''.join(x))
- for x in permutations(str(nb), 4)
- if (is_prime(int(''.join(x)))
- and len(str(int(''.join(x)))) == 4)
- ])
-
-# print(get_prime_permutations(1487))
-for i in range(1000, 10_000):
- if not is_prime(i):
- continue
- print(get_prime_permutations(i))
-# if all([is_prime(p) for p in permutations]):
-# print(sorted(permutations))