In [1]:
!factor 600851475143 | rev | awk '{print $1}' | rev


6857

In [2]:
!factor 600851475143 | awk '{print $NF}'


6857

In [3]:
import math

def get_factors(x):
    '''Returns of prime factors of x in ascending order.'''
    factors = []
    factor = 2
    while factor <= math.sqrt(x):
        while x % factor == 0:
            factors.append(factor)
            x /= factor
        factor += 1
    if x != 1:
        factors.append(x)
    return factors

In [4]:
n = 600851475143

In [5]:
get_factors(n)


Out[5]:
[71, 839, 1471, 6857L]

In [6]:
def foo(x):
    return get_factors(x)[-1]

In [7]:
%timeit foo(n)
foo(n)


1000 loops, best of 3: 1.34 ms per loop
Out[7]:
6857L

In [8]:
def get_factors(x):
    '''Returns of prime factors of x in ascending order.'''
    factors = []
    factor = 2
    while factor * factor <= x:
        while x % factor == 0:
            factors.append(factor)
            x /= factor
        factor += 1
    if x != 1:
        factors.append(x)
    return factors

In [9]:
%timeit foo(n)
foo(n)


1000 loops, best of 3: 973 us per loop
Out[9]:
6857L

In [10]:
get_factors(1000)


Out[10]:
[2, 2, 2, 5, 5, 5]

In [11]:
get_factors(600851475143)


Out[11]:
[71, 839, 1471, 6857L]

In [12]:
get_factors(600851475143)[-1]


Out[12]:
6857L

In [13]:
def get_factors(x):
    '''Returns of prime factors of x in ascending order.'''
    factors = []
    factor = 2
    while factor * factor <= x:
        while x % factor == 0:
            factors.append(factor)
            x /= factor
        factor += 1
    if x != 1:
        factors.append(x)
    return factors

In [14]:
from euler import get_factors2
get_factors = get_factors2

In [15]:
%timeit foo(n)
foo(n)


10000 loops, best of 3: 188 us per loop
Out[15]:
6857L

In [16]:
from euler import get_factors3
get_factors = get_factors3

In [17]:
%timeit foo(n)
foo(n)


1000 loops, best of 3: 229 us per loop
Out[17]:
6857L

In [18]:
from euler import get_factors4
get_factors = get_factors4

In [19]:
%timeit foo(n)
foo(n)


1000000 loops, best of 3: 661 ns per loop
Out[19]:
6857L

In [20]:
from euler import get_factors

In [21]:
%timeit foo(n)
foo(n)


1000000 loops, best of 3: 661 ns per loop
Out[21]:
6857L

In [22]:
from euler import get_factors5
get_factors = get_factors5

In [23]:
%timeit foo(n)
foo(n)


1000000 loops, best of 3: 661 ns per loop
Out[23]:
6857L

In [24]:
from euler import canonical_decomposition2
foo = canonical_decomposition2
%timeit foo(n)
foo(n)


10000 loops, best of 3: 197 us per loop
Out[24]:
{71: 1, 839: 1, 1471: 1, 6857L: 1}

In [25]:
from euler import canonical_decomposition3
foo = canonical_decomposition3
%timeit foo(n)
foo(n)


10000 loops, best of 3: 192 us per loop
Out[25]:
{71: 1, 839: 1, 1471: 1, 6857L: 1}

In [26]:
from euler import canonical_decomposition4
foo = canonical_decomposition4
%timeit foo(n)
foo(n)


10000 loops, best of 3: 197 us per loop
Out[26]:
Counter({6857L: 1, 839: 1, 1471: 1, 71: 1})

In [27]:
from euler import canonical_decomposition5
foo = canonical_decomposition5
%timeit foo(n)
foo(n)


1000 loops, best of 3: 235 us per loop
Out[27]:
Counter({6857L: 1, 839: 1, 1471: 1, 71: 1})

In [28]:
from euler import canonical_decomposition
foo = canonical_decomposition
%timeit foo(n)
foo(n)


1000 loops, best of 3: 230 us per loop
Out[28]:
{71: 1, 839: 1, 1471: 1, 6857L: 1}