题解 | #将真分数分解为埃及分数#
将真分数分解为埃及分数
http://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b
循环依次对分母加1,判断小于真分数则用真分数减去该数, 判断减去之后得到的真分数是否为0,如果不为0,则继续循环对分母加1, 然后再对更新的真分数相减,直到为0.(存在的问题:对于较大的,很难减为0的数,则会超时) import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc = new Scanner(System.in); while(sc.hasNext()) { String str = sc.nextLine(); String []strs = str.split("/"); // System.out.println(Arrays.toString(strs)); int a = Integer.parseInt(strs[0]); int b = Integer.parseInt(strs[1]); int temp = 1; while(true) { if(a * 1.0 / b >= 1.0 / temp) { System.out.print("1/"+temp); a = a * temp - b; b = b * temp; if(a != 0) { System.out.print("+"); for(int i = 2;i < a;i++) { if(a % i == 0 && b % i == 0) { a = a / i; b = b / i; } } } } if(a == 0) { System.out.println(); break; } temp++; } } } }