逆解最大公约数与最小公倍数

本文介绍了一种逆向思维的方法,即已知两数为其他两数的最大公约数和最小公倍数时,如何求解这两组数。通过给出具体的算法实现,帮助读者理解这一数学问题的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述:

我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。

今天我们反其道而行之,给你两个数a和b,计算出它们分别是哪两个数的最大公约数和最小公倍数。
输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。

注:所给数据都有解,不用考虑无解的情况。


def num(m,n):
	l=[]
	a = 0
	b = 0
	if m>n:
		m,n = n,m
	for i in range(m+1,n):
		if i%m==0 and n%i==0:
			l.append(i)
	if len(l)==2:
		print l[0],l[1]
	else:
		min=10000000
		for i in range(0,len(l)/2):
			number = m*n/l[i]
			if number in l and number+l[i]<min:
				min = number+l[i]
				a,b = l[i],number
		print a,b

num(a,b)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值