Open In App

Program to add two fractions

Improve
Improve
Like Article
Like
Save
Share
Report

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

 

Recommended Practice

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) 

 



Last Updated : 26 Aug, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads