Write a program to print the LARGEST ODD fibonaci number in a given range. If the number doesn't fall in the given range then print 0.
Example 1:
Given input
100
250
Expected output
233
Example 2:
Given input
4000
11000
Expected output
6765
# Python 3.9.5
def is_perfect_square(n):
    x = n
    y = (x + 1) // 2
    while y < x:
        x = y
        y = (x + n // x) // 2
    if x**2 == n:
        return True
    else:
        return False
def enter_range():
    fib_range = input('Enter range separate by space: ').split()
    fib_range = [int(i) for i in fib_range]
    return fib_range
def get_fib_number(fib_range):
    result = 0
    for i in range(fib_range[0], fib_range[1]+1):
        if is_perfect_square(5 * i * i + 4) or is_perfect_square(5 * i * i -4):
            if i % 2 == 1:
                result = i
    return result
def main():
    fib_range = enter_range()
    print(get_fib_number(fib_range))
if __name__ == '__main__':
    main()
Comments