Какой метод (разложение на простые множители, алгоритм Евклида, бинетова формула или другое) наиболее эффективен для вычисления НОД(2^50 - 1, 2^30 - 1) и почему

18 Ноя в 10:11
4 +1
0
Ответы
1
Наиболее эффективен использовать тождество, получаемое из свойства делимости (или эквивалентно — из алгоритма Евклида для чисел вида 2n−12^n-12n1):
1) Для любых натуральных m,nm,nm,n верно
gcd⁡(2m−1, 2n−1)=2gcd⁡(m,n)−1. \gcd(2^m-1,\;2^n-1)=2^{\gcd(m,n)}-1.
gcd(2m1,2n1)=2gcd(m,n)1.
Короткое обоснование: если d=gcd⁡(m,n)d=\gcd(m,n)d=gcd(m,n), то d∣m,nd\mid m,ndm,n2d−1∣2m−12^d-1\mid 2^m-12d12m1 и 2d−1∣2n−12^d-1\mid 2^n-12d12n1; наоборот любой общий делитель числа вида 2k−12^k-12k1 делит 2gcd⁡(m,n)−12^{\gcd(m,n)}-12gcd(m,n)1.
2) Применяем к вашей паре: gcd⁡(50,30)=10\gcd(50,30)=10gcd(50,30)=10, следовательно
gcd⁡(250−1, 230−1)=210−1=1023=3⋅11⋅31. \gcd(2^{50}-1,\;2^{30}-1)=2^{10}-1=1023=3\cdot11\cdot31.
gcd(2501,2301)=2101=1023=31131.

Почему это лучше: не нужно факторизовать большие числа и не требуется явный многократный Евклид — достаточно вычислить небольшой gcd⁡\gcdgcd показателей. Binet‑ова формула тут неприменима.
18 Ноя в 10:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир