p5js/古埃及分数.js

28 lines
908 B
JavaScript
Raw Permalink Normal View History

2023-02-20 14:40:56 +00:00
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(" + ")}`);