def check(digits): """ >>> from utility import digits_of >>> check(digits_of(1406357289)) True >>> check(digits_of(1406357298)) False """ digits = digits[1:] # ignore the first number for prime, number in zip(primes, tuplewise(3, digits)): number = from_digits(number) if not number % prime == 0: return False return True
import itertools from utility import prime_factorization, tuplewise def factor_counts(): for n in itertools.count(): yield len(set(prime_factorization(n))) size = 4 for n, counts in enumerate(tuplewise(size, factor_counts())): if all(c >= size for c in counts): print(n) break