题目链接:1447. 最简分数
使用辗转相除法计算两数的最大公约数,然后简化分数,并将其放入集合中,排除相同最简分数。
from typing import List
class Solution:
@staticmethod
def gcd(denominator, numerator):
while numerator != 0: # 辗转相除
denominator, numerator = numerator, denominator % numerator
return denominator
def simplifiedFractions(self, n: int) -> List[str]:
ret = set()
for denominator in range(2, n + 1):
for numerator in range(1, denominator):
gcd = self.gcd(denominator, numerator)
ret.add(f'{numerator // gcd}/{denominator // gcd}')
return list(ret)