mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-30 12:46:11 -04:00
42 lines
968 B
Python
42 lines
968 B
Python
#!/usr/bin/python3
|
|
#!/usr/bin/python3
|
|
|
|
def is_prime(n):
|
|
if n < 4 : return True
|
|
for i in range(2, int(n**0.5 + 1)):
|
|
if not n%i: return False
|
|
return True
|
|
|
|
|
|
def largest_prime_factor(n):
|
|
i = int(n**0.5 +1)
|
|
while i > 1 :
|
|
if not n%i and i&1:
|
|
if is_prime(i): return i
|
|
i -= 1
|
|
return None
|
|
|
|
|
|
def largest_prime_factor_optimized(n):
|
|
factor = 2
|
|
lastfactor = 1
|
|
while n > 1:
|
|
if not n%factor:
|
|
lastfactor = factor
|
|
n = n//factor
|
|
while n%factor == 0:
|
|
n = n//factor
|
|
factor += 1
|
|
return lastfactor
|
|
|
|
|
|
def test_largest_prime_factor():
|
|
assert(largest_prime_factor(13195)== 29)
|
|
print(largest_prime_factor(600851475143))
|
|
assert(largest_prime_factor_optimized(13195) == 29)
|
|
print(largest_prime_factor_optimized(600851475143))
|
|
print('Tests Passed!')
|
|
|
|
if __name__ == '__main__':
|
|
test_largest_prime_factor()
|