拓展歐幾里得證明

看了許久書(shū)終于從似懂非懂走了出來(lái)

設(shè)ax+by=gcd(a,b),解出符合條件的x,y;
當(dāng)b=0時(shí),很顯然有一組必然解,x=1,y=0,即1a+00=gcd(a,b)=a;
即我們討論b!=0的情況;

ax+by=gcd(a,b)=gcd(b,a%b);

令一組解x1,y1使得x1b+y1(a%b)=gcd(b,a%b) =gcd(a,b) = ax+by;
a/b=k…r,k=a/b下取整,所以a%b=a-(a/b向下取整
b);

所以x1b+y1( a-(a/b向下取整b) ) 化簡(jiǎn)得
y1*a+b(x1-y1(a/b向下取整))
所以x=y1,y=x1-y1(a/b向下取整)

x1,y1,在下層已經(jīng)求得,從而遞推出x,y,最下面一層的解為x=1,y=0;

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
exgcd(int a,int b,int &d,int &x,int &y){
    if(!b){x=1,y=0;d=a};
    else{
        exgcd(b,a%b,d,x,y);
        int t=x; x=y; y=t-y*(a/b);
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容