【Java笔试题】辗转相除法

1、题目

从键盘输入两个数5211314和1314,利用辗转相除法求它们的最大公约数,以及输出需要经过多少次辗转?

2、Java代码

import java.util.Scanner;

public class FlounderDivide {
    static int flag = 0;
    public static void main(String[] args) {
        System.out.println("请输入第一个整数:");
        Scanner sc = new Scanner(System.in);
        int one = sc.nextInt();
        System.out.println("请输入第二个整数:");
        Scanner sc2 = new Scanner(System.in);
        int two = sc2.nextInt();
        if (one > two) {
            int a = getNum(one, two);
            System.out.println("需要经过" + (a + 1) + "此辗转");
        } else {
            int a = getNum(two, one);
            System.out.println("需要经过" + (a + 1) + "此辗转");
        }
    }

    public static int getNum(int a, int b) {  //对输入的两个数进行处理(采用了递归)
        int k = 0;
        k = a % b;
        if (k == 0 || k == 1) {
            System.out.println("最大公约数是:" + b);
            return flag;
        } else {
            flag++;
            return getNum(b, k);
        }
    }
}

你可能感兴趣的:(Java笔试题,Java笔试题,辗转相除法,递归)