📜  最大素因数大于其平方根的 N 之前的最大整数(1)

📅  最后修改于: 2023-12-03 15:10:35.735000             🧑  作者: Mango

求解最大素因数大于其平方根的 N 之前的最大整数

问题描述:给定一个整数N,求出小于N的最大整数M,使得M的最大素因数大于M的平方根。

解决方案:要求最大素因数大于平方根,可以先将N分解质因数,然后从最大的素因数开始遍历,找到满足条件的最大整数即可。具体流程如下:

  1. 将N分解质因数,得到所有的素因数。
  2. 对得到的素因数从大到小排序。
  3. 从最大的素因数开始遍历,找到第一个满足最大素因数大于平方根的整数即可。

代码实现如下(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,并且最大素因数大于其平方根。