Problem 3
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
# 求解600851475143的最大质因数。
# 其中分解质因数是难点
def isprime(n): # 定义一个判断是否是质数的函数
i = 2
s = n**0.5
while i <= s:
if n % i == 0:
return False
break
i += 1
else:
return True
def find_prime(a,b): # 定义函数找到一个区间的所有质数
i = a
while i <= b:
if isprime(i) == True:
yield i # 生成器
i += 1
def factorize(num,factor): # 定义分解质因数函数,传入一个空列表来收集质因数
ll = find_prime(2,int(num**0.5+1))
for i in ll:
if num % i == 0:
factor.append(i)
return factorize(int(num/i),factor) # 递归寻找质因数
factor.append(num)
return factor
num = int(input("Input:"))
factor =[]
factor_list = factorize(num,factor)
print("Factors:\n",factor_list)
print("Max Factor:",max(factor_list))
Input:
600851475143
Factors: [71, 839, 1471, 6857]
Max Factor: 6857