题目
给你一个整数n
,请你返回所有0
到1
之间(不包括0
和1
)满足分母小于等于n
的最简分数。分数可以以任意顺序返回。
1 < n < 100
1
2
3
4示例:
n = 3
输出:"1/2" "1/3" "2/3"
思路
- 暴力思路:O(n^2)搜索每一个分子分母搭配,因为数据量小,是可以通过的
- 那么如何验证最简分数呢?答案是分子分母的最大公约数为1。求两个数的最大公约数可以用欧几里得算法(辗转相除法)
- 欧几里得算法:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数
1 | 假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里德算法,是这样进行的: |
- 以下给出递归版本的实现
代码
1 | class Solution { |