本帖最后由 白于玉 于 2023-6-6 00:06 编辑 def PrimeNumberJudgement(n):
if n in [2,3]:
return 1
elif n % 2 == 0:
return 0
elif n % 6 not in [1,5]:
return 0
else:
for i in range(3,int(n**0.5)+1,2):
if n % i == 0:
return 0
return 1
n = 600851475143
factor_list = [] # 质因子列表
while 1:
for f in range(2,int(n**0.5)+1): # 只检查到根号n为止
if n % f == 0: # 若可以除尽
n = n // f # 更新被除数
factor_list.append(f) # 列表添加一个质因子
break
if n == 1:
break
if PrimeNumberJudgement(n) == 1: # 若被除数已经是素数,则结束循环
factor_list.append(n) # 列表添加最后一个质因子
break
print(max(factor_list)) # 输出最大的质因子
|