题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /
import java.util.*;
public class lianxi06 {
public static void main(String[] args) {
int a ,b,m;
Scanner s = new Scanner(System.in);
System.out.print( "键入一个整数: ");
a = s.nextInt();System.out.print( "再键入一个整数: ");
b = s.nextInt();
// new 一个类 目的是调用类中的方法 deff
deff cd = new deff();
// 调用类中的方法 deff 获得最大公约数
m = cd.deff(a,b);
// 计算最小公倍数 ,这个纯粹是数学知识
int n = a * b / m;
System.out.println("最大公约数: " + m);
System.out.println("最小公倍数: " + n);
}
}
class deff {
public int deff(int x, int y) {
int t;
// 如果x<y 则将x和y的值互换
if (x < y) {
t = x;
x = y;
y = t;
}
//程序执行到这里 x肯定大于或者等于y
while (y != 0) {
// 如果x和y相等,那么他们的最大公约数是x
if (x == y){
return x;
}
// 当x和y不相等的时候 将y的值赋值给x 将原x的值和y的余数赋值给y
// 这时候x依然大于或者等于y 接着进行下一轮计算
// 一直循环下去,当k为0的时候,x就是最大公约数了
else {
int k = x % y;
x = y;
y = k;
}
}
return x;
}
}
//公约数
public int getDivisor(int m,int n)
{
var max = m>n ? m : n;
var min = m<n ? m : n;
var temp = max%min;
if(temp != 0)
return getDivisor(min,temp);
return min;
}
//公倍数
public int getMultiple(int m,int n)
{
return m*n/getDivisor(m,n);
}
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入正整数m:");
int m = Integer.parseInt(scan.nextLine());
Scanner scan1 = new Scanner(System.in);
System.out.println("请输入正整数n:");
int n = Integer.parseInt(scan1.nextLine());
int beichushu = 1;
int chushu = 1;
int temp;
if (m > n) {//如果m>n 被除数设为m 除数设为n
beichushu = m;
chushu = n;
} else if (m < n) {//如果m beichushu = n;
chushu = m;
}
while (chushu > 0) {//如果除数>0 就执行循环
temp = beichushu % chushu;//算出余数
beichushu = chushu;//将除数的值赋值给被除数
chushu=temp;//将余数的值赋值给除数
}
System.out.println("最大公约数:" + beichushu);
System.out.println("最小公倍数:" + m * n / beichushu);
}
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入正整数m:");
int m = Integer.parseInt(scan.nextLine());
Scanner scan1 = new Scanner(System.in);
System.out.println("请输入正整数n:");
int n = Integer.parseInt(scan1.nextLine());
int beichushu = 1;
int chushu = 1;
int temp;
if (m > n) {//如果m>n 被除数设为m 除数设为n
beichushu = m;
chushu = n;
} else if (m < n) {//如果m beichushu = n;
chushu = m;
}
while (chushu > 0) {//如果除数>0 就执行循环
temp = beichushu % chushu;//算出余数
beichushu = chushu;//将除数的值赋值给被除数
chushu=temp;//将余数的值赋值给除数
}
System.out.println("最大公约数:" + beichushu);
System.out.println("最小公倍数:" + m * n / beichushu);
}