求最大公因数
#include<bits/stdc++.h>
using namespace std;

int gcd(int a,int b){
    if(b==0) return a;
    return (b,a%b);
}

void exgcd(int a,int b,int &d,int &x,int &y){
    //求解ax+by=gcd(a,b)的一组解,d=gcd(a,b)
    //假设x',y'满足 bx'+(a%b)y'=gcd(b,a%b)=gcd(a,b)
    //结果是x=y',y=x'-(a/b)y' 
    int t;
    if(b==0){
        d=a;
        x=1;
        y=0;
    }else{
        exgcd(b,a%b,d,x,y);
        t=x;
        x=y;
        y=t-(a/b)*y;
        /*
        exgcd(b,a%b,d,y,x);
        y-=x*(a/b); 
        */
    }
}
/*
ax+by=c    在gcd(a,b)|c有解
令k=c/gcd(a,b),能得到x=x'k,y=y'k是方程的一组特解 
通解就是x+t*b',y-a'*t (a'x+b'y=c' ==  a'x~c'(mod b')
其中x',y'是 a' x'+b' y'=1的整数解(用exgcd求出) a'=a/g,b'=b/g
*/

int main(){
    return 0;
}

 

posted on 2022-08-21 11:45  ljq0120  阅读(95)  评论(0编辑  收藏  举报