import math def fermat_factorization(n): start_x = math.ceil(math.sqrt(n)) cur_x = start_x squared_y = 0 for x in range(start_x, (n + 1) // 2): cur_x = x squared_y = math.sqrt(x ** 2 - n) if math.isclose(int(squared_y), squared_y, rel_tol=1e-20): break multiplier_p = cur_x + squared_y multiplier_q = cur_x - squared_y if multiplier_p == n // multiplier_q: factors = [int(multiplier_p), int(multiplier_q)] print(f"Простые множители для {n}: {factors}") else: print(f"Метод Ферма не нашел подходящую пару множителей для {n}") if __name__ == "__main__": print("Введите нечётное целое число n:") n = int(input()) fermat_factorization(n)