НОД. Алгоритм Евклида
Перейти к навигации
Перейти к поиску
long long gcd(long long a, long long b) {
return b ? gcd(b, a % b) : a;
}
long long lcm(long long a, long long b) {
return a / gcd(a, b) * b;
}
long long gcdex(long long a, long long b, long long &x, long long &y) {
if (!b) {
x = 1;
y = 0;
return a;
}
long long x1, y1, d = gcdex(b, a % b, x1, y1);
x = y1;
y = x1 - a / b * y1;
return d;
}
long long inv(long long a, long long mod) {
long long x, y;
return a && gcdex(a, mod, x, y) == 1 ? (x % mod + mod) % mod : 0;
}
Ссылки
Теория:
- e-maxx.ru — Алгоритм Евклида нахождения НОД (наибольшего общего делителя)
- e-maxx.ru — Расширенный алгоритм Евклида
- e-maxx.ru — Обратный элемент в кольце по модулю
- e-maxx.ru — Диофантовы уравнения с двумя неизвестными: AX+BY=C
- neerc.ifmo.ru — Наибольший общий делитель
- brestprog.by — НОД. НОК. Алгоритм Евклида
- algorithmica.org — Теория чисел
- algorithmica.org — Алгоритм Евклида
- algorithmica.org — Обратный элемент по модулю
- usaco.guide — Extended Euclidean Algorithm
Код:
Задачи: