Project Euler in Python. Problema #3

Problema 3

""" Trovare il più grande fattore primo del numero 600851475143
"""
def factorize(n):
        """ prime factorization implemented with trivial trial division method
                complexity should be sqrt(n)/2 or something similar
        """
        factors = []
        checker = 2
        newn = n
        while checker*checker <= newn:
                if newn % checker == 0:
                        factors.append(checker)
                        newn = newn / checker
                else:
                        checker = checker+1

        if newn != 1:
                factors.append(newn)

        return factors

if __name__ == '__main__':
        print factorize(600851475143)[-1]

Ovviamente la funzione factorize() potrebbe essere oggetto di potenti ottimizzazioni, ma il MacMini risolve la pratica in 1.5s e mi accontento😉