算法基础:约分最简分式

需求:对用户输入的一个分数(分别输入分子和分母)进行约分,并且输出约分后的分数(分别输出分子和分母)。

例如:输入分子为6,分母为12,输出为1/2。

求解思路:先用辗转相除法求出两数的最大公约数,然后再分别相除,将所得拼接成字符串结果。

import java.util.Scanner;

public class Contract {
    public static int getContract (int a, int b) {

        if(b == 0){
            return a;
        }else{
            int r = a % b;
            a = b;
            b = r;
            return getContract(a,b);
        }
    }

    public static void main(String[] args) {
        while (true){
            System.out.println("请输入分子与分母:");
            Scanner sc = new Scanner(System.in);
            int num1 = sc.nextInt();
            int num2 = sc.nextInt();
            if(num2 == 0){
                System.out.println("分母不能为0,请重新输入");
                continue;
            }else if(num1 == 0) {
                System.out.println(String.format("约分结果为:0"));
                break;
            }else{
                int result = getContract(num1,num2);
                StringBuilder sb = new StringBuilder();
                sb.append(num1/result);
                sb.append("/");
                sb.append(num2/result);
                System.out.println(String.format("约分结果为:%s",sb.toString()));
                break;
            }
        }
    }
}

运行结果如下:

请输入分子与分母:
6 12
约分结果为:1/2

 

你可能感兴趣的:(算法与数据结构,算法)