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] )