Programa para sumar dos fracciones

Sume dos fracciones a/b y c/d e imprima la respuesta en su forma más simple.
Ejemplos: 
 

Input:  1/2 + 3/2
Output: 2/1

Input:  1/3 + 3/9
Output: 2/3

Input:  1/5 + 3/15
Output: 2/5

Algoritmo para sumar dos fracciones 
 

  • Encuentre un denominador común encontrando el MCM (Mínimo común múltiplo) de los dos denominadores.
  • Cambia las fracciones para que tengan el mismo denominador y suma ambos términos.
  • Reduzca la fracción final obtenida a su forma más simple dividiendo tanto el numerador como el denominador por su factor común más grande.

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>

Producción : 

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

Complejidad de tiempo: O(log(min(a, b)), donde a y b son dos números enteros.

Espacio auxiliar: O(1), no se requiere espacio extra por lo que es una constante.

Vea a continuación para hacer lo mismo usando funciones de biblioteca. 
Manipulaciones de proporciones en C++ | Conjunto 1 (Aritmética) 
Este artículo es una contribución de Rahul Agrawal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *