[Euler Project Problem 3]Largest prime factor
2015. 7. 16. 02:05
def isprime(x):
r = int(sqrt(x))
if x%2 == 0:
return 0
for i in range(3, r+1, 2):
if x%i == 0:
return 0
return 1
def diminish(x, a):
while x%a ==0:
x /= a
return x
def lpf(x):
def lpfSub(a, result):
if a<2:
return result
elif isprime(a):
return a
for i in range(max(3, result), int(sqrt(a))+1, 2):
if isprime(i) and a%i == 0:
a = diminish(a, i)
result = i
return lpfSub(a, result)
result = 1
if x%2 == 0:
result = 2
x = diminish(x, 2)
return lpfSub(x, result)
print lpf(600851475143)
.