定义两个int类型数字,求最大公约数。 定义两个int类型数字,求最小公倍数。

定义两个int类型数字,求最大公约数。
定义两个int类型数字,求最小公倍数。

最大公约数定义以及算法思路列举

最大公约数(Greatest Common Divisor,简称GCD)指的是两个或更多个整数中能够同时整除它们的最大正整数。最小公倍数(Least Common Multiple,简称LCM)指的是能够被两个或更多个整数整除的最小正整数。

计算最大公约数的方法之一是使用欧几里得算法,也称为辗转相除法。该算法基于以下原理:两个数的最大公约数等于其中较小的数和两数的差的最大公约数。通过连续将较大的数除以较小的数并取余数,直到余数为0,此时较小的数就是最大公约数。

例如,计算两个数的最大公约数:
对于数字12和18,我们可以使用欧几里得算法来计算它们的最大公约数:

用18除以12,余数为6。
用12除以6,余数为0。
因为余数为0,所以最大公约数为6。
计算最小公倍数的方法之一是使用两个数的乘积除以它们的最大公约数,即LCM = (a * b) / GCD(a, b)。

继续以12和18为例,它们的最小公倍数可以通过公式计算得出:
LCM(12, 18) = (12 * 18) / 6 = 36

因此,数字12和18的最大公约数为6,最小公倍数为36。

在这里插入图片描述

最大公约数

import java.util.Random;
import java.util.Scanner;

public class Hmw09 {
	public static void main(String[] args) {
		/*
		 *9、定义两个int类型数字,求最大公约数。
		 */		
		// TODO Auto-generated method stub
		
		
		/* 方法一:
		 * 枚举
		 * 1.设i为2;
		 * 2.如果a和b都能被i
		 * 	整除,则记下这个i
		 * 3.i加1后重复第2步,
		 *   直到i=a或b;
		 * 4.那么,曾经记下的
		 * 最大的可以同时整除a和b的i就是gcd(最大公约数)
		 *  */
		Scanner input=new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int m=input.nextInt();
		System.out.println("请再输入一个整数:");
		int n=input.nextInt();
		int gcd=1;

		for(int i=2;i<=m && n>=i ; i++) {
			
			
			if(m%i==0 && n%i==0) {
					gcd=i;
			}
		}
		System.out.println("整数:"+m+"整数"+n+ "最大公约数:"+gcd);
		
		System.out.println("=======方法二=======");
		/* 
		 * 方法二:
		 * 辗转相除法 
		 * 被除数a
		 * 除数b
		 * 余数r
		 * 1.如果b=0,那么最大公约数就是a
		 * 2.否则,计算a除以b的余数,让a等于b,b等于余数r
		 * 3.回到第一步
		 * 
		 * =====================
		 * 被除数    |  除数     |  余数
		 *   a   |   b  |  r
		 *   12  |  18  | 12
		 *   18  |   12 |  6
		 *   12  |   6  |  0
		 *   6   |   0  |  0
		 * */
		
		System.out.println("请输入一个整数:");
		int a=input.nextInt();
		System.out.println("请再输入一个整数:");
		int b=input.nextInt();
		int ora=a;//初始值a
		int orb=b;//初始值b
		
		while(b!=0) {
			int r=a%b;
			System.out.println(r);
			a=b;
			b=r;
			System.out.println("=======");
			System.out.println(a);
			System.out.println(b);
			
		}
	
			System.out.println("整数:"+ora+"整数:"+orb+"最大公约数:"+a);
	}

}

最小公倍数

import java.util.Random;
import java.util.Scanner;

public class Hmw10 {
	public static void main(String[] args) {
		/*
		 *定义两个int类型数字,求最小公倍数。
		 */		
		// TODO Auto-generated method stub
		
		Scanner input=new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int m=input.nextInt();
		System.out.println("请再输入一个整数:");
		int n=input.nextInt();
		int gcd=1;
		
		for(int i=2;i<=m && n>=i ; i++) {
			
			
			if(m%i==0 && n%i==0) {
					gcd=i;
			}
		}
		System.out.println("整数:"+m+"整数"+n+ "最大公约数:"+gcd + "最小公倍数:"+(m*n)/gcd );
	
	

	}

}

在这里插入图片描述





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值