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