import java.util.Scanner; // import scannerpublic class Fractions{ public static void main(String args[]) { Scanner inputint = new Scanner(System.in); System.out.print("Enter maximum denominator: "); int i = inputint.nextInt(); // declare maximum denominator Rational x = new Rational(1, 1); Rational x1 = new Rational(0, 1); Rational x3; for(Rational x2 = new Rational(1, i); x1.compareTo(x) < 0; x2 = x3) // the algorithm.. kaka { System.out.print((new StringBuilder()).append(x1).append(", ").toString()); int j = ((x1.denominator() + i) / x2.denominator()) * x2.numerator() - x1.numerator(); int k = ((x1.denominator() + i) / x2.denominator()) * x2.denominator() - x1.denominator(); x3 = new Rational(j, k); x1 = x2; } System.out.println(x1); } private static Rational zero = new Rational(0, 1); private int num; private int den; public void Rational(int i, int j) // rational is here { int k = g(i, j); num = i / k; den = j / k; } private static int g(int i, int j) // find gcd { if(0 == j) return i; else return g(j, i % j); } public int numerator() // return numerator { return num; } public int denominator() // return denominator { return den; }}