扩展欧几里德算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展欧几里德算法相关的知识,希望对你有一定的参考价值。
为什么老是碰上
扩展欧几里德算法
( •?∀•? )最讨厌数论了
看来是时候学一学了
度娘百科说:
首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •?∀•? )她说根据数论中的相关定理可以证明,反正我信了)
所以 ax+by = gcd(a, b) * k 也肯定有解 (废话,把x和y乘k倍就好了)
那么已知 a,b 求 一组解 x,y 满足 ax+by = gcd(a, b) 这个公式
1 #include<cstdio> 2 typedef long long LL; 3 void ex_gcd(LL a, LL b, LL &x, LL &y, LL &d){ 4 if (!b) {d = a, x = 1, y = 0;} 5 else{ 6 ex_gcd(b, a % b, y, x, d); 7 y -= x * (a / b); 8 } 9 } 10 int main(){ 11 LL a, b, d, x, y; 12 while(~scanf("%lld%lld", &a, &b)){ 13 ex_gcd(a, b, x, y, d); 14 printf("%lld*a + %lld*b = %lld\n", x, y, d); 15 } 16 }
( •?∀•? )解完了
睡觉~~~
以上是关于扩展欧几里德算法的主要内容,如果未能解决你的问题,请参考以下文章