面试题系:解读最大公约数和最小公倍数

面试题系列:求最大公约数和最小公倍数在这里插入图片描述

题目:输入两个正整数m和n,求其最大公约数和最小公倍数

那么做题之前先来分析一波:
在这里插入图片描述

m和n的最大公约数:m和n的公约数:在[1, m和n中较小的数] 能够把m和n都整除的数
例如:9和21的公约数, 1和3

如何找最大公约数?
从[m和n中较小的数]开始往[1]的方向找,找到的第一个公约数,就是最大公约数

m和n的公倍数:
在[m和n中较大的数,无穷]能够被m和n整除的数
最小公倍数:

在[m和n中较大的数,mn]之间
如何找最小公倍数?
在[m和n中较大的数,m
n]之间,找到第一个能被被m和n整除的数

在这里插入图片描述

方法:

class Test{
	public static void main(String[] args){
//输入两个正整数m和n
java.util.Scanner input = new java.util.Scanner(System.in);

		int m;
		do{
			System.out.print("请输入正整数m:");
			m = input.nextInt();

			if(m<=0){
				System.out.println(m + "不是正整数,正整数是大于零的数。");
			}
		}while(m<=0);

		int n;
		do{
			System.out.print("请输入正整数n:");
			n = input.nextInt();

			if(n<=0){
				System.out.println(n + "不是正整数,正整数是大于零的数。");
			}
		}while(n<=0);

		//找出m和n中较小的数
		//方案一:
		//int min = m < n ? m : n;
		//方案二:我希望m永远小于或等于n
		if(m > n){
			int temp = m;
			m = n;
			n = temp;
		}
		//到这步为止m <= n


		//找最大公约数
		for(int i=m; i>=1; i--){
		//看这个i是否是m和n的公约数
			if(m%i==0 && n%i==0){
				System.out.println(i+"是它俩的最大公约数");
				break;//找到了就不用找了
			}
		}

		//找最小公倍数
		for(int i=n; i<=m*n; i++){
		//看i是否是m和n的公倍数
			if(i%m==0 && i%n==0){
				System.out.println(i+"是它俩的最小公倍数");
				break;
			}
		}
	}
}



在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值