# Program to compare two fractions

• Difficulty Level : Easy
• Last Updated : 11 May, 2021

Given two fractions a/b and c/d, compare them and print the larger of the two.

Examples :

```Input: 5/6, 11/45
Output: 5/6

Input: 4/5 and 2/3
Output: 4/5 ```

We can simply convert the fractions into floating-point values by dividing the numerator by the denominator. Once we have the two floating-point numbers corresponding to each fraction, we can compare these numbers and determine which fraction is larger.
However, the computed answer may be incorrect due to floating-point approximations and truncations during the division process. To get the most accurate answer we should avoid resorting to floating-point division.
To compare two fractions we need to make their denominators the same. We can do this by cross-multiplying numerators with denominators. Let’s see how this works

```We have two fractions a/b and c/d.
Let Y = (a/b - c/d)
Now,
if Y > 0 then a/b > c/d
if Y = 0 then a/b = c/d
if Y < o then a/b < c/d

Since bd is always positive, the sign of Y depends only on the

Complexity :
Since we perform two multiplication and one subtraction operation, the answer is computed in constant time i.e O(1)

## C++

 `// CPP program to find max between``// two Rational numbers``#include ``using` `namespace` `std;` `struct` `Fraction {``    ``int` `num, den;``};` `// Get max of the two fractions``Fraction maxFraction(Fraction first, Fraction sec)``{``    ``// Declare nume1 and nume2 for get the value of``    ``// first numerator and second numerator``    ``int` `a = first.num;``    ``int` `b = first.den;``    ``int` `c = sec.num;``    ``int` `d = sec.den;` `    ``// Compute ad-bc``    ``int` `Y = a * d - b * c;` `    ``return` `(Y > 0) ? first : sec;``}` `// Driver Code``int` `main()``{``    ``Fraction first = { 3, 2 };``    ``Fraction sec = { 3, 4 };` `    ``Fraction res = maxFraction(first, sec);``    ``cout << res.num << ``"/"` `<< res.den;``    ``return` `0;``}`

## Java

 `// Java program to find max between``// two Rational numbers` `import` `java.io.*;``import` `java.util.*;` `class` `Fraction {``    ` ` ``int` `num, den;` `//Constructor``Fraction(``int` `n,``int` `d){``    ``num=n;``    ``den=d;``}` ` ``// Get max of the two fractions``static` `Fraction maxFraction(Fraction first, Fraction sec)``{``    ``// Declare nume1 and nume2 for get the value of``    ``// first numerator and second numerator``    ``int` `a = first.num;``    ``int` `b = first.den;``    ``int` `c = sec.num;``    ``int` `d = sec.den;`` ` `    ``// Compute ad-bc``    ``int` `Y = a * d - b * c;`` ` `    ``return` `(Y > ``0``) ? first : sec;``}` `// Driver function``public` `static` `void` `main (String[] args) {` `   ``Fraction first = ``new` `Fraction( ``3``, ``2` `);``   ``Fraction sec = ``new` `Fraction( ``3``, ``4` `);`` ` `    ``Fraction res = maxFraction(first, sec);``    ``System.out.println(res.num +``"/"``+ res.den);``    ` `}``}` `// This code is contributed by Gitanjali.`

## Python3

 `# Python3 program to find max``# between two Rational numbers` `# Get max of the two fractions``def` `maxFraction(first, sec):``    ` `    ``# Declare nume1 and nume2 for get the value``    ``# of first numerator and second numerator``    ``a ``=` `first[``0``]; b ``=` `first[``1``]``    ``c ``=` `sec[``0``]; d ``=` `sec[``1``]` `    ``# Compute ad-bc``    ``Y ``=` `a ``*` `d ``-` `b ``*` `c` `    ``return` `first ``if` `Y ``else` `sec` `# Driver Code``first ``=` `( ``3``, ``2` `)``sec ``=` `( ``3``, ``4` `)``res ``=` `maxFraction(first, sec)``print``(``str``(res[``0``]) ``+` `"/"` `+` `str``(res[``1``]))`  `# This code is contributed by Ansu Kumari.`

## C#

 `// C# program to find max between``// two Rational numbers``using` `System;` `class` `Fraction {``    ` `    ``int` `num, den;``    ` `    ``//Constructor``    ``Fraction(``int` `n,``int` `d)``    ``{``        ``num=n;``        ``den=d;``    ``}``    ` `    ``// Get max of the two fractions``    ``static` `Fraction maxFraction(Fraction first, Fraction sec)``    ``{``        ``// Declare nume1 and nume2 for get the value of``        ``// first numerator and second numerator``        ``int` `a = first.num;``        ``int` `b = first.den;``        ``int` `c = sec.num;``        ``int` `d = sec.den;``    ` `        ``// Compute ad-bc``        ``int` `Y = a * d - b * c;``    ` `        ``return` `(Y > 0) ? first : sec;``    ``}``    ` `    ``// Driver function``    ``public` `static` `void` `Main ()``    ``{``    ` `        ``Fraction first = ``new` `Fraction( 3, 2 );``        ``Fraction sec = ``new` `Fraction( 3, 4 );``        ` `        ``Fraction res = maxFraction(first, sec);``        ``Console.WriteLine(res.num +``"/"``+ res.den);``        ` `    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 `// javascript program to find max``// between two Rational numbers``  ` `// Get max of the two fractions``function` `maxFraction(first, sec) {``      ` `    ``// Declare nume1 and nume2 for get the value``    ``// of first numerator and second numerator``    ``a = first; b = first``    ``c = sec; d = sec``  ` `    ``// Compute ad-bc``    ``Y = a * d - b * c``  ` `    ``return` `(Y > 0) ? first : sec;` `}``  ` `// Driver Code` `first = [ 3, 2 ];``sec = [ 3, 4 ];``res = maxFraction(first, sec);` `document.write(res + ``"/"` `+ res);`

Output :

`3/2`

My Personal Notes arrow_drop_up