Это не официальный сайт wikipedia.org 01.01.2023

Алгоритм Корначчи — Википедия

Алгоритм Корначчи

Алгоритм Корначчи — это алгоритм решения диофантова уравнения x 2 + d y 2 = m , где 1 d < m , а d и m взаимно просты. Алгоритм описал в 1908 Джузеппе Корначчи[1].

АлгоритмПравить

Сначала находим любое решение r 0 2 d ( mod m )  . Если такого r 0   не существует, исходное уравнение не имеет примитивных решений. Без потери общности можно считать, что r 0 m 2   (если это не так, заменим r0 на m - r0, которое остаётся корнем из -d). Теперь используем алгоритм Евклида для поиска r 1 m ( mod r 0 )  , r 2 r 0 ( mod r 1 )   и так далее. Останавливаемся, когда r k < m  . Если s = m r k 2 d   является целым числом, то решением будет x = r k , y = s  . В противном случае примитивного решения нет.

Для поиска непримитивных решений (x, y), где НОД(x, y) = g ≠ 1, заметим, из существования такого решения следует, что g2 делит m (и, эквивалентно, что если m является свободным от квадратов, то все решения примитивны). Тогда вышеприведённый алгоритм можно использовать для поиска примитивного решения (u, v) уравнения u 2 + d v 2 = m g 2  . Если такое решение найдено, то (gu, gv) будет решением исходного уравнения.

ПримерПравить

Решаем уравнение x 2 + 6 y 2 = 103  . Квадратный корень из −6 (mod 103) равен 32 и 103 ≡ 7 (mod 32). Поскольку 7 2 < 103   и 103 7 2 6 = 3  , существует решение x = 7, y = 3.

ПримечанияПравить

  1. Cornacchia, 1908, с. 33–90.

ЛитератураПравить

  • G. Cornacchia. Su di un metodo per la risoluzione in numeri interi dell' equazione h = 0 n C h x n h y h = P  . // Giornale di Matematiche di Battaglini. — 1908. — Т. 46.

СсылкиПравить

Basilla, Julius Magalona On Cornacchia's algorithm for solving the diophantine equation u 2 + d v 2 = m    (неопр.) (PDF) (12 мая 2004).