1. 程式人生 > 實用技巧 >真分數分解為埃及分數(HJ82) (不太懂)

真分數分解為埃及分數(HJ82) (不太懂)

C++程式碼:

#include<iostream>
#include<string>

using namespace std;

int main() 
{
    char ch='0';
    int a = 0;
    int b =0;

    while (cin >> a >> ch >> b)
    {
        while (a != 1) 
        {
            if (b % (a - 1) == 0) 
            {
                cout << 1
<< "/" << b / (a - 1) << "+"; a = 1; } else { int c=0; c = b / a + 1; //新的埃及分數的分母 a = a - b % a; //通分後相減得到的分子 //因為:b=na+x,由通分可得分子為ac-b,c=n+1則分子為na+a-na-x=a-x,而x=b%a,所以分子為a-b%a
b = b * c; //通分後的分母 cout << 1 << "/" << c << "+"; if (b%a == 0) { //判斷最新得到的是不是埃及分數 b = b / a; a = 1; } } } cout << 1
<< "/" << b << endl; } return 0; }