diff options
Diffstat (limited to 'lab11')
| -rw-r--r-- | lab11/lab11.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lab11/lab11.py b/lab11/lab11.py new file mode 100644 index 0000000..c369645 --- /dev/null +++ b/lab11/lab11.py @@ -0,0 +1,26 @@ +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)
|