Programm zum Addieren zweier Brüche
Probieren Sie es bei GfG Practice aus
Ausgabe
Gegeben sind zwei ganzzahlige Arrays A[] Und B[] Enthält zwei ganze Zahlen, die jeweils den Zähler und den Nenner eines Bruchs darstellen. Die Aufgabe besteht darin, die Summe der beiden Brüche zu ermitteln und den Zähler und Nenner des Ergebnisses zurückzugeben.
Beispiele:
Eingang : a = [1 2] b = [3 2]
Ausgabe : [2 1]
Erläuterung: 1/2 + 3/2 = 2/1Eingang : a = [1 3] b = [3 9]
Ausgabe : [2 3]
Erläuterung: 1/3 + 3/9 = 2/3Eingang : a = [1 5] b = [3 15]
Ausgabe : [2 5]
Erläuterung: 1/5 + 3/15 = 2/5
Algorithmus zum Addieren zweier Brüche
- Finden Sie einen gemeinsamen Nenner, indem Sie das finden LCM (Kleinstes gemeinsames Vielfaches) der beiden Nenner.
- Ändern Sie die Brüche den gleichen Nenner haben und beide Terme addieren.
- Reduzieren Sie den erhaltenen Endbruch in seine einfachere Form, indem Sie Zähler und Nenner durch ihren größten gemeinsamen Faktor dividieren.
#include using namespace std ; // Function to find gcd of a and b int gcd ( int n1 int n2 ) { if ( n1 == 0 ) return n2 ; return gcd ( n2 % n1 n1 ); } //Function to add two fractions vector < int > addFraction ( vector < int > a vector < int > b ) { vector < int > ans ; // Finding gcd of den1 and den2 int den = gcd ( a [ 1 ] b [ 1 ]); // Denominator of final fraction obtained // finding LCM of den1 and den2 // LCM * GCD = a * b den = ( a [ 1 ] * b [ 1 ]) / den ; // Changing the fractions to have same denominator // Numerator of the final fraction obtained int num = ( a [ 0 ]) * ( den / a [ 1 ]) + ( b [ 0 ]) * ( den / b [ 1 ]); // finding the common factor of numerator and denominator int common_factor = gcd ( num den ); // Converting the result into simpler // fraction by dividing them with common factor den = den / common_factor ; num = num / common_factor ; ans . push_back ( num ); ans . push_back ( den ); return ans ; } int main () { vector < int > a = { 1 2 }; vector < int > b = { 3 2 }; vector < int > ans = addFraction ( a b ); cout < < ans [ 0 ] < < ' ' < < ans [ 1 ]; return 0 ; }
C #include // Function to find gcd of a and b int gcd ( int n1 int n2 ) { if ( n1 == 0 ) return n2 ; return gcd ( n2 % n1 n1 ); } // Function to add two fractions void addFraction ( int a [] int b [] int result []) { // Finding gcd of den1 and den2 int den = gcd ( a [ 1 ] b [ 1 ]); // Denominator of final fraction obtained // finding LCM of den1 and den2 // LCM * GCD = a * b den = ( a [ 1 ] * b [ 1 ]) / den ; // Changing the fractions to have same denominator // Numerator of the final fraction obtained int num = ( a [ 0 ]) * ( den / a [ 1 ]) + ( b [ 0 ]) * ( den / b [ 1 ]); // finding the common factor of numerator and denominator int common_factor = gcd ( num den ); // Converting the result into simpler // fraction by dividing them with common factor den = den / common_factor ; num = num / common_factor ; result [ 0 ] = num ; result [ 1 ] = den ; } int main () { int a [] = { 1 2 };; int b [] = { 3 2 };; int ans [ 2 ]; addFraction ( a b ans ); printf ( '%d %d' ans [ 0 ] ans [ 1 ]); return 0 ; }
Java import java.util.ArrayList ; import java.util.List ; public class Main { // Function to find gcd of a and b public static int gcd ( int n1 int n2 ) { if ( n1 == 0 ) return n2 ; return gcd ( n2 % n1 n1 ); } // Function to add two fractions public static List < Integer > addFraction ( List < Integer > a List < Integer > b ) { List < Integer > ans = new ArrayList <> (); // Finding gcd of den1 and den2 int den = gcd ( a . get ( 1 ) b . get ( 1 )); // Denominator of final fraction obtained // finding LCM of den1 and den2 // LCM * GCD = a * b den = ( a . get ( 1 ) * b . get ( 1 )) / den ; // Changing the fractions to have same denominator // Numerator of the final fraction obtained int num = ( a . get ( 0 )) * ( den / a . get ( 1 )) + ( b . get ( 0 )) * ( den / b . get ( 1 )); // finding the common factor of numerator and denominator int common_factor = gcd ( num den ); // Converting the result into simpler // fraction by dividing them with common factor den = den / common_factor ; num = num / common_factor ; ans . add ( num ); ans . add ( den ); return ans ; } public static void main ( String [] args ) { List < Integer > a = new ArrayList <> (); a . add ( 1 ); a . add ( 2 ); List < Integer > b = new ArrayList <> (); b . add ( 3 ); b . add ( 2 ); List < Integer > ans = addFraction ( a b ); System . out . println ( ans . get ( 0 ) + ' ' + ans . get ( 1 )); } }
Python from math import gcd # Function to add two fractions def addFraction ( a b ): # Finding gcd of den1 and den2 den = gcd ( a [ 1 ] b [ 1 ]) # Denominator of final fraction obtained # finding LCM of den1 and den2 # LCM * GCD = a * b den = ( a [ 1 ] * b [ 1 ]) // den # Changing the fractions to have same denominator # Numerator of the final fraction obtained num = ( a [ 0 ]) * ( den // a [ 1 ]) + ( b [ 0 ]) * ( den // b [ 1 ]) # finding the common factor of numerator and denominator common_factor = gcd ( num den ) # Converting the result into simpler # fraction by dividing them with common factor den //= common_factor num //= common_factor return [ num den ] if __name__ == '__main__' : a = [ 1 2 ] b = [ 3 2 ] ans = addFraction ( a b ) print ( f ' { ans [ 0 ] } { ans [ 1 ] } ' )
C# // Function to find gcd of a and b int gcd ( int n1 int n2 ) { if ( n1 == 0 ) return n2 ; return gcd ( n2 % n1 n1 ); } // Function to add two fractions List < int > addFraction ( List < int > a List < int > b ) { List < int > ans = new List < int > (); // Finding gcd of den1 and den2 int den = gcd ( a [ 1 ] b [ 1 ]); // Denominator of final fraction obtained // finding LCM of den1 and den2 // LCM * GCD = a * b den = ( a [ 1 ] * b [ 1 ]) / den ; // Changing the fractions to have same denominator // Numerator of the final fraction obtained int num = ( a [ 0 ]) * ( den / a [ 1 ]) + ( b [ 0 ]) * ( den / b [ 1 ]); // finding the common factor of numerator and denominator int common_factor = gcd ( num den ); // Converting the result into simpler // fraction by dividing them with common factor den = den / common_factor ; num = num / common_factor ; ans . Add ( num ); ans . Add ( den ); return ans ; } public static void Main () { List < int > a = new List < int > { 1 2 }; List < int > b = new List < int > { 3 2 }; List < int > ans = addFraction ( a b ); Console . WriteLine ( ans [ 0 ] + ' ' + ans [ 1 ]); }
JavaScript // Function to find gcd of a and b function gcd ( n1 n2 ) { if ( n1 === 0 ) return n2 ; return gcd ( n2 % n1 n1 ); } // Function to add two fractions function addFraction ( a b ) { let ans = []; // Finding gcd of den1 and den2 let den = gcd ( a [ 1 ] b [ 1 ]); // Denominator of final fraction obtained // finding LCM of den1 and den2 // LCM * GCD = a * b den = ( a [ 1 ] * b [ 1 ]) / den ; // Changing the fractions to have same denominator // Numerator of the final fraction obtained let num = ( a [ 0 ]) * ( den / a [ 1 ]) + ( b [ 0 ]) * ( den / b [ 1 ]); // finding the common factor of numerator and denominator let common_factor = gcd ( num den ); // Converting the result into simpler // fraction by dividing them with common factor den = den / common_factor ; num = num / common_factor ; ans . push ( num ); ans . push ( den ); return ans ; } let a = [ 1 2 ]; let b = [ 3 2 ]; let ans = addFraction ( a b ); console . log ( ans [ 0 ] + ' ' + ans [ 1 ]);
Ausgabe
2 1
Zeitkomplexität : O(log(min(a b))
Hilfsraum : O(1)