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

时间:2021-08-10 21:38:57

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基础——练习题:键盘输入两个正整数求两个数的最大公约数和最小公倍数