黑马程序员——java基础——练习题:键盘输入两个正整数求两个数的最大公约数和最小公倍数

时间:2022-06-01 21:08:29

android培训java培训期待与您交流!

练习题:键盘输入两个正整数求两个数的最大公约数和最小公倍数

公约数:几个数公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。

公倍数:几个数公有的倍数,叫做这几个数的公倍数;其中最小的一个,叫做这几个数的最小公倍数。

思路:
1、创建Scanner对象,调用扫描方法获取键盘录入的数据
2、自定义一个类,定义四个成员变量,两个变量作为构造方法进行接受和传递,另外两个用于接收得到的数据
3、定义两个成员方法获取最大公约数和最小公倍数
4、创建自定义的类类型对象,把键盘录入的数据作为构造方法的参数


代码实现:

package test;

import java.util.Scanner;

public class DivisorDemo {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入两个正整数");
		System.out.println("请输入第一个正整数");
		int x=sc.nextInt();
		System.out.println("请输入第二个正整数");
		int y=sc.nextInt();
		maxDivisorMinMultiple mdmm=new maxDivisorMinMultiple(x,y);
		int maxDivisor=mdmm.maxDivisor(x,y);
		int minMultiple=mdmm.minMultiple(x,y);
		System.out.println("最大公约数是:"+maxDivisor);
		System.out.println("最小公倍数是:"+minMultiple);
	}
}

class maxDivisorMinMultiple{
	private int m,n;
	private int divisor, multiple;//定义公约数和公倍数
	public maxDivisorMinMultiple(int m,int n){
		if(m>n){ //用m记录住最大数,用于计算最小公倍数和最大公约数
			this.m=m;
			this.n=n;
		}else{
			this.m=n;
			this.n=m;
		}
	}
	
	public int maxDivisor(int m,int n){
		for(int x=n; x>=1;x--){ //通过观察得知最大公约数必须是小于或等于两个数的最小数n,而且必须大于等于1
			if(n%x==0&&m%x==0){ //如果n、m能被同一个数整除,那么x就是n、m的公约数
				divisor=x;
				break;//跳出循环获取最大的公约数
			}
		}
		return divisor;
	}
	
	public int minMultiple(int m,int n){
		for(int x=m; x>=1; x++)//通过观察发现最小公倍数大于或者等于最大数m
		{
			if(x%n==0&&x%m==0){ //如果x能被n、m同时整除,那么x就是n、m的公倍数
				multiple=x;
				break;//跳出循环获取做小的公倍数
			}
			
		}
		return multiple;
	}
}

运行后得到的结果是:

黑马程序员——java基础——练习题:键盘输入两个正整数求两个数的最大公约数和最小公倍数