def is_prime(n):
    if n % 2 == 0:
        return False
    i = 3
    while i < n/2:
        if n % i == 0:
            return False
        i += 2
    return True
    
[x for x in xrange(1,30) if is_prime(x)]

def find_factors(n):
    i = 3
    while i < n:
        if n % i == 0:
            yield i
        i += 2


target = 317584931803
# target = 13195

print [x for x in find_factors(target) if is_prime(x)]




    
