Given an integer n, return a list of all simplified fractions between 0 and 1 (exclusive) such that the denominator is less-than-or-equal-to n. The fractions can be in any order.
Example 1:
Input: n = 2
Output: ["1/2"]
Explanation: "1/2" is the only unique fraction with a denominator less-than-or-equal-to 2.
Example 2:
Input: n = 3
Output: ["1/2","1/3","2/3"]
Example 3:
Input: n = 4
Output: ["1/2","1/3","1/4","2/3","3/4"]
Explanation: "2/4" is not a simplified fraction because it can be simplified to "1/2".
Example 4:
Input: n = 1
Output: []
Constraints:
1 <= n <= 100
class Solution:
    def simplifiedFractions(self, n: int) -> List[str]:
        def gcd(a: int, b: int) -> int:
            if a < b:
                a, b = b, a
            if b == 0:
                return a
            return gcd(b, a % b)
        
        out = []
        for denom in range(2, n + 1):
            for num in range(1, denom):
                if gcd(denom, num) == 1:
                    out.append(str(num) + '/' + str(denom))
        return out
class Solution:
    def simplifiedFractions(self, n: int) -> List[str]:
        def gcd(a: int, b: int) -> int:
            if a < b:
                a, b = b, a
            if b == 0:
                return a
            return gcd(b, a % b)
        
        out = []
        for denom in range(2, n + 1):
            for num in range(1, denom):
                if gcd(denom, num) == 1:
                    out.append(str(num) + '/' + str(denom))
        return out