https://projecteuler.net/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?
def sieve_of_eratosthenes(number):
primes = []
prospects = [n for n in range(2, number + 1)]
while prospects:
p = prospects[0]
prospects = [x for x in prospects if x % p != 0]
primes.append(p)
if p * p > number:
break
return primes + prospects
import math
def get_prime_factors(n):
ps = sieve_of_eratosthenes(n)
fs = []
for p in ps:
if n % p == 0:
fs.append(p)
while n % p == 0:
n = n // p
return fs
def trial_division(n):
a = []
if n % 2 == 0:
a.append(2)
while n % 2 == 0:
n //= 2
f = 3
while f * f <= n:
if n % f == 0:
a.append(f)
while n % f == 0:
n //= f
else:
f += 2
if n != 1:
a.append(n)
return a
assert(get_prime_factors(14) == [2, 7])
assert(get_prime_factors(644) == [2, 7, 23])
print(trial_division(126))
s = []
for n in range(2, 1000000):
if len(trial_division(n)) == 4:
s.append(n)
else:
s = []
if len(s) == 4:
s = s[0]
break
print(s)
assert(s == 134043)