# Program to add two fractions

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: Please solve it on “PRACTICE” first, before moving on to the solution.

• 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 there largest common factor.

## C++

 `// C++ program to add 2 fractions ` `#include ` `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

 ` `

Output :

```1/500 + 2/1500 is equal to 1/300
```

See below for doing the same using library functions.
Ratio Manipulations in C++ | Set 1 (Arithmetic)

This article is contributed by Rahul Agrawal .If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up

Improved By : jit_t, Mithun Kumar

Article Tags :
Practice Tags :

4

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.