Project Euler Problem 003

http://projecteuler.net/index.php?section=problems&id=3

The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?


問題文にあるとおり素因数分解をする。これ以外の方法はわからん。

import math

def primefactors(n):
    result = []
    
    while n and not n & 0x01:
        n >>= 1
        result.append(2)
    
    m = 3
    limit = math.sqrt(n)
    while n > 1 and m <= limit:
        
        while n % m:
            m += 2
        else:
            while True:
                n /= m
                result.append(m)
                if n % m: break
            limit = math.sqrt(n)
                
    else:
        if n != 1:
            result.append(n)
    
    return result


print primefactors(600851475143)



答え: 6857
( [71, 839, 1471, 6857] )