You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定x,如何寻找满足gcd(a,b)+lcm(a,b)=x且差值最小的a、b?

问题要求

寻找两个数𝑎和𝑏,需满足以下条件:

  • 它们的最大公约数(gcd)与最小公倍数(lcm)之和等于给定数𝑥
  • 𝑎 ≤ 𝑏
  • 两数的差值尽可能小
原始Python代码
import math

def prime_factors(num):  
    ret = []
    prime = 1
    while num % 2 == 0:  
        prime *= 2 
        num = num / 2  
    prime > 1 and ret.append(2)
    for i in range(3, int(math.sqrt(num)) + 1, 2):   
        prime = 1
        while num % i == 0: 
            prime = prime * i 
            num = num / i  
        prime > 1 and ret.append(i//1)
    if num > 2:  
        ret.append(num)
    return ret


def find_ab(gcd,lcm):
    """
        
    """
    return gcd,lcm
        

if __name__ == "__main__":
    t = int(input()) # 测试用例数量
    while t:
        x = int(input())
        factors = prime_factors(x)
        print(x)
        print("===")
        for n in factors:
            gcd,lcm = n,x-n
            print("----")
            print(find_ab(gcd,lcm))
        t-=1

内容的提问来源于stack exchange,提问作者Mansouri Rayen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:00:33