Problem 3 - Largest prime factor
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
its time complexity is O(n) (linear) with the largest factor
It means it's fast for 600851475143 but not for 600851475145
def get_prime_factors(number):
factor=2
while number <> 1 & factor <= number:
factor += 1
while number % factor == 0:
yield factor
number /= factor
for x in get_prime_factors(600851475143):
print x
its time complexity is O(sqrt(n)) (fractional power) with the largest factor.
def get_prime_factors(number):
while number % 2 == 0:
yield 2
number /= 2
factor=1
maxFactor = int(number ** .5)
while number <> 1 & factor <= maxFactor:
factor += 2
while number % factor == 0:
yield factor
number /= factor
if number > 1:
yield number
for x in get_prime_factors(600851475145):
print x
No comments:
Post a Comment