题目
给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。
因为是分数,所以 分子 肯定是 0 < i < n, 分母 是 0 < i+1 <= n 才能组成分数
解题思路
n = 2 1/2
n = 3 1/2 1/3 2/3
n = 4 1/2 1/3 2/3 2/4 3/4 // 此时 1/2 和 2/4是相等的,所以在处理2/4时跳过
如果 分子 分母有公约数,则跳过,利用欧几里得算法求最大公约数
代码
var gcd = function(a, b) {
if (b) return gcd(b, a % b)
return a;
}
var simplifiedFractions = function(n) {
if (n == 1) return [];
let result = [];
// 分子
for (let i = 1; i < n; i++) {
for (let j = i + 1; j <= n; j++) {
if (gcd(i,j) !== 1) continue;
result.push(i + '/' + j);
}
}
return result;
};