📜  程序将两个分数相加

📅  最后修改于: 2021-04-26 08:50:45             🧑  作者: Mango

将两个分数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