def primes(): """ yields prime numbers """ P = (2,) yield 2 for i in count(3, 2): if all(i % p for p in upto(sqrt(i), P)): P = P + (i,) yield i
def largest_prime_factor(n): ''' returns the largest prime factor to n ''' return max(filter(lambda p: not n % p, upto(sqrt(n), primes())))