#!/usr/bin/python3

# https://math.stackexchange.com/questions/1039519/finding-prime-factors-by-taking-the-square-root

import math, functools, operator

def factor_helper(n):
    for i in range(2, int(math.ceil(math.sqrt(n)))+1):
        if n % i == 0:
            return i
    # this is prime
    return n

def factor(n):
    rt=[]
    while True:
        p=factor_helper(n)
        if p==1:
            break
        rt.append (p)
        n=n//p
    return rt

def max_factor(n):
    prev=-1
    while True:
        p=factor_helper(n)
        if p==1:
            return prev
        prev=p
        n=n//p

n=600851475143
print (max(factor(n)))
print (max_factor(n))

