如何简化分数

时间:2011-10-15 10:05:25

标签: c++ c algorithm math greatest-common-divisor

我想在我的应用程序中简化一小部分。分数是这样的, x / y其中x和y是整数。 我想将分数简化为最简单的形式。 任何人都可以给我提示如何做到这一点。 提前谢谢。

4 个答案:

答案 0 :(得分:23)

  • 计算x和y的最大公约数
  • 将它们分为GCD

Euclid's algorithm是计算GCD的简便方法。

答案 1 :(得分:16)

除以gcd(x,y)

Binary GCD algorithm是在计算机上计算GCD的快捷方式。

答案 2 :(得分:-3)

通过获得最大公约数来找到GCD。您可以通过谷歌搜索来做到这一点。

答案 3 :(得分:-4)

     #include<iostream>
      using namespace std;
        struct fraction
        {
              int n1, d1, n2, d2, s1, s2;
             };
         void simplification(int a,int b)
       {
                bool e = true;
            int t; int z;
        for (int i = (a*b); i > 1;i--)
        { if ((a%i==0)&&(b%i==0))
       {
        t = a / i;
      z = b / i;

         }
else
         {
            e = false;
       }
         }
         cout << "simplest form=" << t << "/" << z << endl;

      }
      void sum(int num1, int deno1, int num2, int deno2)
        {
            int k,y;
          k = num1* deno2 + num2*deno1;
          y = deno2*deno1;
           cout << "addition of given fraction = " << k << "/" << y << endl;
         simplification(k, y);
      }
     void sub(int num1, int deno1, int num2, int deno2)
     {              
           int k, y;

            k = num1*deno2 - num2*deno1;
        y = deno1*deno2;
            cout << "Substraction of given fraction = " << k << "/" << y << endl;

          }
         void mul(int num1, int deno1, int num2, int deno2)
            {
            int k, y;

            k = num1*num2;
                y = deno1*deno2;
                 cout << "multiplication of given fration= " << k<< "/" <<y;                                        cout<< endl;
                simplification(k, y);
            }

        void div(int num1, int deno1, int num2, int deno2)
          {
          int k, y;
       ;
     k = num1*deno1;
     y = deno1*num2;
        cout << "division of given fraction" << k << "/" << y << endl;
    simplification(k, y);
     }


      int main()
       {    fraction a;
            cout << "enter numirator of f1=";cin >> a.n1;
          cout << "enter denominator of f1=";cin >> a.d1;
            cout << "enter numirator of f2=";cin >> a.n2;
        cout << "enter denominator of f2=";cin >> a.d2;
            cout << "f1= " << a.n1 << "/" << a.d1 << endl;
                cout << "f2= " << a.n2 << "/" << a.d2 << endl;
            mul(a.n1, a.d1, a.n2, a.d2);
        div(a.n1, a.d1, a.n2, a.d2); 
                sub(a.n1, a.d1, a.n2, a.d2);
                sum(a.n1, a.d1, a.n2, a.d2);
         system("pause");
           }