Add two fraction a/b and c/d and print answer in simplest form.
Examples :
Input: 1/2 + 3/2 Output: 2/1 Input: 1/3 + 3/9 Output: 2/3 Input: 1/5 + 3/15 Output: 2/5
Algorithm to add two fractions
- Find a common denominator by finding the LCM (Least Common Multiple) of the two denominators.
- Change the fractions to have the same denominator and add both terms.
- Reduce the final fraction obtained into its simpler form by dividing both numerator and denominator by their largest common factor.
C++
// C++ program to add 2 fractions #include<bits/stdc++.h> using namespace std;
// Function to return gcd of a and b int gcd( int a, int b)
{ if (a == 0)
return b;
return gcd(b%a, a);
} // Function to convert the obtained fraction // into it's simplest form void lowest( int &den3, int &num3)
{ // Finding gcd of both terms
int common_factor = gcd(num3,den3);
// Converting both terms into simpler
// terms by dividing them by common factor
den3 = den3/common_factor;
num3 = num3/common_factor;
} //Function to add two fractions void addFraction( int num1, int den1, int num2,
int den2, int &num3, int &den3)
{ // Finding gcd of den1 and den2
den3 = gcd(den1,den2);
// Denominator of final fraction obtained
// finding LCM of den1 and den2
// LCM * GCD = a * b
den3 = (den1*den2) / den3;
// Changing the fractions to have same denominator
// Numerator of the final fraction obtained
num3 = (num1)*(den3/den1) + (num2)*(den3/den2);
// Calling function to convert final fraction
// into it's simplest form
lowest(den3,num3);
} // Driver program int main()
{ int num1=1, den1=500, num2=2, den2=1500, den3, num3;
addFraction(num1, den1, num2, den2, num3, den3);
printf ( "%d/%d + %d/%d is equal to %d/%d\n" , num1, den1,
num2, den2, num3, den3);
return 0;
} |
Java
// Java program to add 2 fractions class GFG{
// Function to return gcd of a and b static int gcd( int a, int b)
{ if (a == 0 )
return b;
return gcd(b%a, a);
} // Function to convert the obtained fraction // into it's simplest form static void lowest( int den3, int num3)
{ // Finding gcd of both terms
int common_factor = gcd(num3,den3);
// Converting both terms into simpler
// terms by dividing them by common factor
den3 = den3/common_factor;
num3 = num3/common_factor;
System.out.println(num3+ "/" +den3);
} //Function to add two fractions static void addFraction( int num1, int den1,
int num2, int den2)
{ // Finding gcd of den1 and den2
int den3 = gcd(den1,den2);
// Denominator of final fraction obtained
// finding LCM of den1 and den2
// LCM * GCD = a * b
den3 = (den1*den2) / den3;
// Changing the fractions to have same denominator
// Numerator of the final fraction obtained
int num3 = (num1)*(den3/den1) + (num2)*(den3/den2);
// Calling function to convert final fraction
// into it's simplest form
lowest(den3,num3);
} // Driver program public static void main(String[] args)
{ int num1= 1 , den1= 500 , num2= 2 , den2= 1500 ;
System.out.print(num1+ "/" +den1+ " + " +num2+ "/" +den2+ " is equal to " );
addFraction(num1, den1, num2, den2);
} } // This code is contributed by mits |
Python3
# Python3 program to add 2 fractions # Function to return gcd of a and b def gcd(a, b):
if (a = = 0 ):
return b;
return gcd(b % a, a);
# Function to convert the obtained # fraction into it's simplest form def lowest(den3, num3):
# Finding gcd of both terms
common_factor = gcd(num3, den3);
# Converting both terms
# into simpler terms by
# dividing them by common factor
den3 = int (den3 / common_factor);
num3 = int (num3 / common_factor);
print (num3, "/" , den3);
# Function to add two fractions def addFraction(num1, den1, num2, den2):
# Finding gcd of den1 and den2
den3 = gcd(den1, den2);
# Denominator of final
# fraction obtained finding
# LCM of den1 and den2
# LCM * GCD = a * b
den3 = (den1 * den2) / den3;
# Changing the fractions to
# have same denominator Numerator
# of the final fraction obtained
num3 = ((num1) * (den3 / den1) +
(num2) * (den3 / den2));
# Calling function to convert
# final fraction into it's
# simplest form
lowest(den3, num3);
# Driver Code num1 = 1 ; den1 = 500 ;
num2 = 2 ; den2 = 1500 ;
print (num1, "/" , den1, " + " , num2, "/" ,
den2, " is equal to " , end = "");
addFraction(num1, den1, num2, den2); # This code is contributed by mits |
C#
// C# program to add 2 fractions class GFG{
// Function to return gcd of a and b static int gcd( int a, int b)
{ if (a == 0)
return b;
return gcd(b%a, a);
} // Function to convert the obtained fraction // into it's simplest form static void lowest( int den3, int num3)
{ // Finding gcd of both terms
int common_factor = gcd(num3,den3);
// Converting both terms into simpler
// terms by dividing them by common factor
den3 = den3/common_factor;
num3 = num3/common_factor;
System.Console.WriteLine(num3+ "/" +den3);
} //Function to add two fractions static void addFraction( int num1, int den1, int num2, int den2)
{ // Finding gcd of den1 and den2
int den3 = gcd(den1,den2);
// Denominator of final fraction obtained
// finding LCM of den1 and den2
// LCM * GCD = a * b
den3 = (den1*den2) / den3;
// Changing the fractions to have same denominator
// Numerator of the final fraction obtained
int num3 = (num1)*(den3/den1) + (num2)*(den3/den2);
// Calling function to convert final fraction
// into it's simplest form
lowest(den3,num3);
} // Driver program public static void Main()
{ int num1=1, den1=500, num2=2, den2=1500;
System.Console.Write(num1+ "/" +den1+ " + " +num2+ "/" +den2+ " is equal to " );
addFraction(num1, den1, num2, den2);
} } // This code is contributed by mits |
PHP
<?php // PHP program to add // 2 fractions // Function to return // gcd of a and b function gcd( $a , $b )
{ if ( $a == 0)
return $b ;
return gcd( $b % $a , $a );
} // Function to convert the // obtained fraction into // it's simplest form function lowest(& $den3 , & $num3 )
{ // Finding gcd of both terms
$common_factor = gcd( $num3 , $den3 );
// Converting both terms
// into simpler terms by
// dividing them by common factor
$den3 = (int) $den3 / $common_factor ;
$num3 = (int) $num3 / $common_factor ;
} // Function to add // two fractions function addFraction( $num1 , $den1 , $num2 ,
$den2 , & $num3 , & $den3 )
{ // Finding gcd of den1 and den2
$den3 = gcd( $den1 , $den2 );
// Denominator of final
// fraction obtained finding
// LCM of den1 and den2
// LCM * GCD = a * b
$den3 = ( $den1 * $den2 ) / $den3 ;
// Changing the fractions to
// have same denominator Numerator
// of the final fraction obtained
$num3 = ( $num1 ) * ( $den3 / $den1 ) +
( $num2 ) * ( $den3 / $den2 );
// Calling function to convert
// final fraction into it's
// simplest form
lowest( $den3 , $num3 );
} // Driver Code $num1 = 1; $den1 = 500;
$num2 = 2; $den2 = 1500;
$den3 ; $num3 ;
addFraction( $num1 , $den1 , $num2 ,
$den2 , $num3 , $den3 );
echo $num1 , "/" , $den1 , " + " ,
$num2 , "/" , $den2 , " is equal to " ,
$num3 , "/" , $den3 , "\n" ;
// This code is contributed by aj_36 ?> |
Javascript
<script> // Javascript program to add 2 fractions // Function to return gcd of a and b const gcd = (a, b) => { if (a == 0)
return b;
return gcd(b % a, a);
} // Function to convert the // obtained fraction into // it's simplest form const lowest = (den3, num3) => { // Finding gcd of both terms
let common_factor = gcd(num3, den3);
// Converting both terms
// into simpler terms by
// dividing them by common factor
den3 = parseInt(den3 / common_factor);
num3 = parseInt(num3 / common_factor);
document.write(`${num3}/${den3}`)
} // Function to add two fractions const addFraction = (num1, den1, num2, den2) => { // Finding gcd of den1 and den2
let den3 = gcd(den1, den2);
// Denominator of final
// fraction obtained finding
// LCM of den1 and den2
// LCM * GCD = a * b
den3 = (den1 * den2) / den3;
// Changing the fractions to
// have same denominator Numerator
// of the final fraction obtained
let num3 = ((num1) * (den3 / den1) +
(num2) * (den3 / den2));
// Calling function to convert
// final fraction into it's
// simplest form
lowest(den3, num3);
} // Driver Code let num1 = 1; let den1 = 500; let num2 = 2; let den2 = 1500; document.write(`${num1}/${den1} + ${num2}/${den2} is equal to `); addFraction(num1, den1, num2, den2); // This code is contributed by _saurabh_jaiswal </script> |
Output :
1/500 + 2/1500 is equal to 1/300
Time Complexity: O(log(min(a, b)), where a and b are two integers.
Auxiliary Space: O(1), no extra space required so it is a constant.
See below for doing the same using library functions.
Ratio Manipulations in C++ | Set 1 (Arithmetic)
Article Tags :
Recommended Articles