Program to compare two fractions - GeeksforGeeks

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) 
      = (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++
Java
Python3
C#
PHP
Javascript
// 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 fractionsFraction 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 Codeint main(){    Fraction first = { 3, 2 };    Fraction sec = { 3, 4 };     Fraction res = maxFraction(first, sec);    cout << res.num << "/" << res.den;    return 0;}
// Java program to find max between// two Rational numbers import java.io.*;import java.util.*; class Fraction {      int num, den; //ConstructorFraction(int n,int d){    num=n;    den=d;}  // Get max of the two fractionsstatic 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 functionpublic 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 program to find max# between two Rational numbers # Get max of the two fractionsdef 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 Codefirst = ( 3, 2 )sec = ( 3, 4 )res = maxFraction(first, sec)print(str(res[0]) + "/" + str(res[1]))  # This code is contributed by Ansu Kumari.
// C# program to find max between// two Rational numbersusing 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 program to find max// between two Rational numbers // Get max of the two fractionsfunction 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.?>
// javascript program to find max// between two Rational numbers   // Get max of the two fractionsfunction 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 > 0) ? first : sec; }   // Driver Code first = [ 3, 2 ];sec = [ 3, 4 ];res = maxFraction(first, sec); document.write(res[0] + "/" + res[1]);
Output :  
3/2
 
Mithun Kumar
bunnyram19
Fraction
number-theory
Mathematical
number-theory
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Algorithm to solve Rubik's Cube
Modular multiplicative inverse
Program to multiply two matrices
Program to print prime numbers from 1 to N.
Count ways to reach the n'th stair
Program to convert a given number to words
Fizz Buzz Implementation
Singular Value Decomposition (SVD)
Check if a number is Palindrome
Find first and last digits of a number