将两个分数a / b和c / d相加,并以最简单的形式打印答案。
例子 :
Input: 1/2 + 3/2
Output: 2/1
Input: 1/3 + 3/9
Output: 2/3
Input: 1/5 + 3/15
Output: 2/5
加两个分数的算法
- 通过找到两个分母的LCM(最小公倍数)来找到一个公分母。
- 更改分数以具有相同的分母并添加两个术语。
- 通过将分子和分母除以最大的公因子,将获得的最终分数简化为更简单的形式。
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
Javascript
输出 :
1/500 + 2/1500 is equal to 1/300