给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。
分数可以以 任意 顺序返回。
- 示例
输入:n = 4
输出:["1/2","1/3","1/4","2/3","3/4"]
解释:"2/4" 不是最简分数,因为它可以化简为 "1/2" 。
思路
枚举分子和分母,并判断两个数是否为最简(即最大公约数是否为1)。还可以使用Set
去重,下边就不列出来了,感兴趣的可以试一下。
- 代码
public List<String> simplifiedFractions(int n) {
List<String> list = new ArrayList<>();
for (int i = 2; i <=n ; i++) {
for (int j = 1; j < i; j++) {
if (gcd(i,j)==1){
String s = j+"/"+i;
list.add(s);
}
}
}
return list;
}
// 欧几里得算法(最常用,建议记住)
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}