ordered fractions problem 71 https projecteuler netproblem71 consider the fraction nd where n and d are positive integers if nd and hcfn d1 it is called a reduced proper fraction if we list the set of reduced proper fractions for d 8 in ascending order of size we get 18 17 16 15 14 27 13 38 25 37 12 47 35 58 23 57 34 45 56 67 78 it can be seen that 25 is the fraction immediately to the left of 37 by listing the set of reduced proper fractions for d 1 000 000 in ascending order of size find the numerator of the fraction immediately to the left of 37 returns the closest numerator of the fraction immediately to the left of given fraction numeratordenominator from a list of reduced proper fractions solution 428570 solution3 7 8 2 solution6 7 60 47 returns the closest numerator of the fraction immediately to the left of given fraction numerator denominator from a list of reduced proper fractions solution 428570 solution 3 7 8 2 solution 6 7 60 47
def solution(numerator: int = 3, denominator: int = 7, limit: int = 1000000) -> int:
    
    max_numerator = 0
    max_denominator = 1

    for current_denominator in range(1, limit + 1):
        current_numerator = current_denominator * numerator // denominator
        if current_denominator % denominator == 0:
            current_numerator -= 1
        if current_numerator * max_denominator > current_denominator * max_numerator:
            max_numerator = current_numerator
            max_denominator = current_denominator
    return max_numerator


if __name__ == "__main__":
    print(solution(numerator=3, denominator=7, limit=1000000))