''' 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 math import numpy as np def sieve(n): assert n > 1 ns = [True] * n for i in range(2, math.ceil(np.sqrt(n))): if ns[i]: j = pow(i, 2) while j < n: ns[j] = False j = j + i return [i for i,val in enumerate(ns) if val][2:] def primeFactors(n, primes): res = [] for p in primes: if n % p == 0: res.append(p) while n % p == 0: n /= p return res def main(): print("Hello this is Patrick") end = 1000000 primeList = sieve(end) primeSet = set(primeList) consecs = 0 for n in range(100000, end): if n not in primeSet: if len(primeFactors(n, primeList)) == 4: consecs += 1 else: consecs = 0 else: consecs = 0 if consecs == 4: for i in range(n-3, n+1): print(i, primeFactors(i, primeList)) break if __name__ == "__main__": main()