练习1:求最大公约数
import java.util.Scanner;
public class Divisor {
    public static void main(String[] args) {
        //第一步:键盘输入两个正整数m、n
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个正整数m=");
        int m = input.nextInt();
        System.out.println("请输入第二个正整数n=");
        int n = input.nextInt();
        int i;
        //第二步:方法1:用辗转相除法求最大公约数
       /* if(m > n){
            while(m % n != 0){
                i = m % n;
                m = n;
                n = i;
            }
            System.out.println("最大公约数是:" + n);
        }else if(m < n){
            while(n % m != 0){
                i = n % m;
                n = m;
                m = i;
            }
            System.out.println("最大公约数是:" + m);
        }else{
            System.out.println("最大公约数是:" + m);
        }*/
       //对辗转相除法的改进
       /*if(n > m){
           m += n;
           n = m - n;
           m = m - n;
       }//将n比m大时,交换m、n两个数字
       while(m % n != 0){
           i = m % n;
           m = n;
           n = i;
       }
        System.out.println("最大公约数是:" + n);*///不需要单独考虑m=n的情况
        //方法2:辗转相减法求最大公约数
  /*    while(m != n){
            if(m > n){
                m = m - n;
            }else if(m < n){
                n = n - m;
            }
        }
        System.out.println("最大公约数是:" + m);*/
        //方法3:穷举法
     /*   for(i = m > n ? n : m;i >= 1;i--){
            if(m % i == 0 && n % i == 0){
                System.out.println("最大公约数是:" + i);
                break;
            }
        }*/
        //方法4:递归法
        int result = Divisor.recursion(m,n);
        System.out.println(result);
    }
    public static int recursion(int m, int n) {
        if(n == 0){
            return m;
        }
        return recursion(n, m%n);
    }
}
练习2:求最小公倍数
import java.util.Scanner;
//练习:求两个正整数的最小公倍数
public class Multiple {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入第一个正整数:");
        int m = input.nextInt();
        System.out.print("请输入第二个正整数:");
        int n = input.nextInt();
        int i = 1;
        //方法1:穷举法
      /*  for(i = m > n ? m : n;i <= m*n;i++){
            if(i % m == 0 && i % n == 0){
                System.out.println("最小公倍数是:" + i);
                break;
            }
        }*/
        //方法2:公式法:m和n的乘积等于它们最小公倍数与最大公约数的乘积
        int result = Divisor.recursion(m, n);
        System.out.println("最小公倍数是:" + m * n / result);
    }
}