# factoring
def factors(n):
f, fs = 2, []
while f * f <= n:
if n % f == 0:
fs.append(f)
n /= f
else:
f += 1
fs.append(n)
return fs
print factors(13290059)
print factors(16)
print factors(600851475143)
IyBmYWN0b3JpbmcKIApkZWYgZmFjdG9ycyhuKToKICAgIGYsIGZzID0gMiwgW10KICAgIHdoaWxlIGYgKiBmIDw9IG46CiAgICAgICAgaWYgbiAlIGYgPT0gMDoKICAgICAgICAgICAgZnMuYXBwZW5kKGYpCiAgICAgICAgICAgIG4gLz0gZgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGYgKz0gMQogICAgZnMuYXBwZW5kKG4pCiAgICByZXR1cm4gZnMKIApwcmludCBmYWN0b3JzKDEzMjkwMDU5KQpwcmludCBmYWN0b3JzKDE2KQpwcmludCBmYWN0b3JzKDYwMDg1MTQ3NTE0Myk=