Largest prime factor
Problem 3
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
当时考虑最大质因子,只要拿这个数自最小的质数开始除,除到最后,剩下的就是最大的质因子了,结果写出来的,好复杂额,不知道有没有简单的方法
#The prime factors of 13195 are 5, 7, 13 and 29.
#What is the largest prime factor of the number 600851475143 ?
import math
#判断质数
def isPrime(n):
temp = int(math.sqrt(n)) + 1
for i in range(2,temp):
if n % i == 0:
return False
return True
#提取下一个质数
def nextPrime(n):
result = n + 1
while True:
if isPrime(result):
return result
result += 1
#不停的除质数,知道最后剩下的质数,就是最大的了
def biggestPrimeFactor(n):
start = 2
while start < n:
#只要能整除,就一直整除,知道不能整除位置
if n % start == 0:
n = n / start
else:
start = nextPrime(start)
return n
print(biggestPrimeFactor(600851475143))