扩展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求解二元不定方程及其证明

相关文章:

你感兴趣的文章:

标签云: