遇到这样一个问题:以分数的形式输出两个数的商,比如7除以10 ,不是输出 0.7 而是输出 7/10 , 6除以9 输出 2/3 。
因为java没有对应的转化函数,所以自己写了一个。我的做法比较简单 ,先用辗转相除法求出两个数的最大公约数,然后进行进行约数处理得到最简结果,再将得到化简的两个数以 “n / m” 的形式输出 。
辗转相除法求最大公约数:比如现在有两个数 n 和 m 求他们的最大公约数 (假设 n > m)。如果 n % m = 0 ,那么说明其最大公约数为 m , 如果 n % m != 0 , 那么 取 n = m , 而 m 为 n 除以 m 的余数,即 m = n%m , 重复上面操作直至得到最大公约数 。
具体代码:
package com.hunter.mianshizhinan;
import java.util.Scanner;
/**
*
* @author luzi
*
*/
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int n = scan.nextInt();