7-9 最大公约数和最小公倍数 (10 分)

该篇博客介绍了一个使用Java编程解决求两个正整数最大公约数和最小公倍数的问题。通过一个简单的for循环实现辗转相除法找到最大公约数,并利用公式计算最小公倍数。博主分享了代码示例,适合初学者参考学习。

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:
输入在一行中给出两个正整数M和N(≤1000)。

输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

鸣谢安阳师范学院段晓云老师和软件工程五班李富龙同学补充测试数据!

代码部分:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		try (// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in)) {
			int m,n;
			int i,gcd=0,lcm=0;
			m = in.nextInt();
			n = in.nextInt();
			//找最大公约数
			for(i=1;i<=m || i<=n;i++) {
				if(m%i==0 && n%i==0)
					gcd = i;
			}
			lcm = m*n/gcd;    //最小公倍数 = 两数之积 / 最大公约数
			System.out.println(gcd+" "+lcm);
			in.close();
		}
	}

}

本题关键:最大公倍数不难,对于最小公倍数,只要知道其公式就好啦。
java刚入门小白,如有错误或优化欢迎大佬们的指点!

<think>我们首先需要理解用户的问题:用户提到了“7-2题目”,但未提供具体题目内容。根据上下文,这可能是某本书或练习册中的题目编号。由于没有具体题目,我们需要进行网络搜索,查找常见的关于最大公约数最小公倍数题目,特别是编号为7-2的题目。 然而,经过思考,由于无法直接获取用户所指的具体题目,我们可以考虑用户可能是指一个常见的题目类型,即给定两个数,求它们的最大公约数(GCD)最小公倍数(LCM)。 因此,我们可以提供求解两个数的最大公约数最小公倍数的通用方法。同时,考虑到用户可能指的是特定题目,我们也可以尝试搜索是否有常见的题目编号为7-2的题目。 但是,经过初步网络搜索(模拟),发现“7-2”可能不是具体的题目,而可能是某个教材的章节编号。比如,在《C语言程序设计》等教材中,第7章第2节可能是关于最大公约数最小公倍数的内容。因此,我们假定用户需要的是求解两个整数的最大公约数最小公倍数的方法。 下面提供通用的求解方法: 最大公约数(GCD)的常用求解方法有:辗转相除法(欧几里得算法)、质因数解法等。 最小公倍数(LCM)的求解方法通常为:利用两个数的乘积等于它们的最大公约数最小公倍数的乘积这一关系(即:LCM(a,b) = |a*b| / GCD(a,b)),所以通常先求最大公约数,再求最小公倍数。 具体步骤: 1. 最大公约数(GCD)的求解(以辗转相除法为例): 用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。最后的除数就是这两个数的最大公约数。 2. 最小公倍数(LCM)的求解: 利用公式:$LCM(a, b) = \frac{|a \times b|}{GCD(a, b)}$ 注意:由于题目没有给出具体的两个数,这里无法给出具体答案。但可以给出一个示例。 示例:求1218的最大公约数最小公倍数。 步骤1:求最大公约数 18 ÷ 12 = 1 ... 6(余数6) 12 ÷ 6 = 2 ... 0(余数为0) 所以最大公约数为6。 步骤2:求最小公倍数 $LCM(12, 18) = \frac{|12 \times 18|}{6} = \frac{216}{6} = 36$ 另外,我们可以用代码实现(这里提供Python代码): 求最大公约数的函数(辗转相除法): ```python def gcd(a, b): while b: a, b = b, a % b return a ``` 求最小公倍数的函数: ```python def lcm(a, b): return abs(a * b) // gcd(a, b) if a and b else 0 ``` 注意:上述代码中考虑了ab为0的情况。 因此,针对用户的问题,虽然没有具体数字,但提供了通用的方法示例。如果用户有具体的两个数,可以按照上述方法计算。 最后,按照要求生成相关问题: </think>### 最大公约数最小公倍数的求解方法 最大公约数(GCD)最小公倍数(LCM)是整数的重要属性。求解过程通常采用以下方法: **最大公约数(GCD)求解** 使用欧几里得算法(辗转相除法),原理基于等式: $$GCD(a,b) = GCD(b, a \mod b)$$ 其中 $a > b$,重复此过程直到余数为0 最终非零余数即为最大公约数 示例步骤(求 48 18 的 GCD): 48 ÷ 18 = 2 余 12 18 ÷ 12 = 1 余 6 12 ÷ 6 = 2 余 0 GCD = 6 Python 实现: ```python def gcd(a, b): while b: a, b = b, a % b return a ``` **最小公倍数(LCM)求解** 利用 GCD 与 LCM 的关系公式: $$LCM(a,b) = \frac{|a \times b|}{GCD(a,b)}$$ 当 $a, b \neq 0$ 示例(求 12 18 的 LCM): GCD(12,18) = 6 LCM = (12 × 18) / 6 = 36 Python 实现: ```python def lcm(a, b): return abs(a * b) // gcd(a, b) ``` **特殊数字处理** - 若两数互质(GCD=1),LCM = a × b - 0 没有定义 LCM - 负数需先取绝对值计算 实际应用中,建议先求 GCD 再推导 LCM,效率高于因数解法。对于多数字的 GCD/LCM,可通过迭代计算完成: $$GCD(a,b,c) = GCD(GCD(a,b),c)$$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值