最简分数
难度:中等
这道题的难点在于数学,判断是不是 最简分数,也就是判断分子和分母的最大公约数是不是1,如何求两数的最大公约数?辗转相除法。(也叫欧几里得算法)
代码如下:
public List<String> simplifiedFractions(int n) {
List<String> res = new ArrayList<>();
for (int i = 1; i < n; i++) {
for (int j = i+1; j <= n ; j++) {
if (gcd(i,j)==1) {
res.add(i+"/"+j);
}
}
}
return res;
}
int gcd(int a, int b) { // 欧几里得算法
return b == 0 ? a : gcd(b, a % b);
}
执行结果:成功