扩展gcd求解二元不定方程及其证明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展gcd求解二元不定方程及其证明相关的知识,希望对你有一定的参考价值。
#include <cstdio> #include <iostream> using namespace std; /*扩展gcd证明 由于当d = gcd(a,b)时; d = d1 = gcd(b,a%b); d1 = b1x1 + a%by1; d = ax+by = b1x1+a%by1。又由于a%b = a - a%b*b; 上式变形能够有 b1x1 + (a-b*a/b)*y1 = a*y1 + b*(x1-a/b*y1); 也就是是说ax+by = a*y1 + b*(x1-a/b*y1); 所以当x=y1,y = x1-a/b*y1时。能够满足有d=ax+by; */ int fun(int a,int b,int d,int &x,int &y){ if(b == 0){ x = 1; y = 0; return a; } else{ d = fun(b,a%b,d,x,y); int t; t = x; x = y; y = t-a/b*y; return d; } } int main(){ int a,b,d; cin >>a >> b >> d; int x,y; fun(a,b,d,x,y); printf("%d %d\n",x,y); return 0; }
以上是关于扩展gcd求解二元不定方程及其证明的主要内容,如果未能解决你的问题,请参考以下文章