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 in 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 same. We can do this by cross-multiplying numerators with denominators. Lets see how this works

We have two fractions a/b and c/d. Let Y = (a/b - c/d) = (ad - bc)/(bd) 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 numerator (ad-bc). So we need to compute (ad-bc) only.

**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 <bits/stdc++.h>` `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

`<?php` `// PHP 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` `[0];` ` ` `$b` `= ` `$first` `[1];` ` ` `$c` `= ` `$sec` `[0];` ` ` `$d` `= ` `$sec` `[1];` ` ` ` ` `// Compute ad-bc` ` ` `$Y` `= ` `$a` `* ` `$d` `- ` `$b` `* ` `$c` `;` ` ` ` ` `return` `(` `$Y` `) ? ` `$first` `: ` `$sec` `;` `}` ` ` `// Driver Code` `$first` `= ` `array` `( 3, 2 );` `$sec` `= ` `array` `( 3, 4 );` `$res` `= maxFraction(` `$first` `, ` `$sec` `);` `echo` `$res` `[0] . ` `"/"` `. ` `$res` `[1];` ` ` `// This code is contributed ` `// by mits.` `?>` |

**Output :**

3/2

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**