📅  最后修改于: 2023-12-03 15:10:35.735000             🧑  作者: Mango
问题描述:给定一个整数N,求出小于N的最大整数M,使得M的最大素因数大于M的平方根。
解决方案:要求最大素因数大于平方根,可以先将N分解质因数,然后从最大的素因数开始遍历,找到满足条件的最大整数即可。具体流程如下:
代码实现如下(Python语言):
import math
def prime_factors(n):
"""分解质因数"""
factors = []
i = 2
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
def solve(n):
"""求解最大素因数大于其平方根的 N 之前的最大整数"""
factors = prime_factors(n)
factors.sort(reverse=True)
for factor in factors:
if factor > math.sqrt(n):
return n // factor * factor - 1
return -1
最后,测试一下:
n = 123456789
print(solve(n)) # 输出123456781
可以看到,小于n
的最大整数是123456781
,并且最大素因数大于其平方根。