diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-01-14 14:30:56 +0100 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-01-14 14:30:56 +0100 |
| commit | f588a2e670f9cd92590ee535619168ca933b8098 (patch) | |
| tree | 3ce32c02c529dd7deef54443597156b521c2342b | |
| parent | 41b7f521b911e48b80286df701186f18d2bfdff3 (diff) | |
| download | project_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.py | 49 | ||||
| -rw-r--r-- | python/wip/047-distinct_primes_factors.py | 20 | ||||
| -rw-r--r-- | python/wip/049-prime_permutations.py | 23 |
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)) |
