const process = require("process"); const 求最大公约数 = (a, b) => (b ? 求最大公约数(b, a % b) : a); const 求最小公倍数 = (a, b) => (a * b) / 求最大公约数(a, b); function 求约分数(分子, 分母) { const 最大公约数 = 求最大公约数(分子, 分母); return [分子 / 最大公约数, 分母 / 最大公约数]; } function 求分数的差(a, b, c, d) { let 分子 = a * d - c * b; let 分母 = b * d; return 求约分数(分子, 分母); } let [分子, 分母] = 求约分数(process.argv[2], process.argv[3]); 分子 = 分子 % 分母; const 埃及分数 = []; const [a, b] = [分子, 分母]; while (分子 != 1) { let n = Math.floor(分母 / 分子) + 1; 埃及分数.push(`1/${n}`); [分子, 分母] = 求分数的差(分子, 分母, 1, n); } 埃及分数.push(`1/${分母}`); console.log(`${a}/${b} = ${埃及分数.join(" + ")}`);