最大公约数和最小公倍数
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;
}
}