def is_prime(x):
divisibles = [d for d in range(2, x//2+1) if x % d == 0]
return len(divisibles) == 0
def diff(first, second):
second = set(second)
return [item for item in first if item not in second]
def sieve(x):
r = range(2,x+1)
i = 0
while i < len(r):
multiple = [m for m in r[i+1:] if m % r[i] == 0]
r = diff(r, multiple)
i += 1
return r
def prime_factors(n):
"""Returns all the prime factors of a positive integer"""
factors = []
d = 2
while n > 1:
while n % d == 0:
factors.append(d)
n /= d
d = d + 1
if d*d > n:
if n > 1: factors.append(int(n))
break
return factors
num = 600851475143
pfs = prime_factors(num)
print(pfs)