擴展歐幾里得算法求一次同餘方程的解(一個最小解的情況)

擴展歐幾里得算法求一次同餘方程的解(一個最小解的情況)

long long X,Y;
void Gcd(long long A,long long B,long long &gcd)
{
	if(B){Gcd(B,A%B,gcd);long long t=X;X=Y;Y=t-(A/B)*Y;}
	else {gcd=A;X=1,Y=0;}
}
void GCD(long long A, long long B, long long C)//A*x=B Mod (C)
{
    long long gcd;
    Gcd(A,C,gcd);
    if(B%gcd) printf("Impossible\n");//無解的情況
    else
    {
        X*=B/gcd;
        Y*=B/gcd;
        if(X>0)X%=C;
        else X=X%C+C;
        printf("%lld\n",X);//第一個最小的解
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章