擴充套件歐幾里得的通解是怎麼求出來的

2021-03-19 18:19:32 字數 2895 閱讀 7173

1樓:

擴充套件歐幾里德演算法是用來在已知a, b求解一組x,y,使它們滿足貝祖等式: ax+by = ***(a, b) =d(解一定存在,根據數論中的相關定理)。擴充套件歐幾里德常用在求解模線性方程及方程組中。

下面是一個使用c++的實現:

intex***(int a,int b,int x,int y)intr=ex***(b,a%b,x,y);

intt=x;x=y;y=t-a/b*y;

return r;

}把這個實現和***的遞迴實現相比,發現多了下面的x,y賦值過程,這就是擴充套件歐幾里德演算法的精髓。

關於擴充套件歐幾里得演算法有點不明白,請大神指教

2樓:匿名使用者

這是通過數學計算出來的(所以,學好數學很重要),其實你應該仔細理解該演算法的原理!如下內容摘自:http:

//******blogs.***/frog112111/archive/2012/08/19/2646012.

html

擴充套件歐幾里德演算法

基本演算法:對於不完全為 0 的非負整數 a,b,***(a,b)表示 a,b 的最大公約數,必然存在整數對 x,y ,使得 ***(a,b)=ax+by。

證明:設 a>b。

1,顯然當 b=0,***(a,b)=a。此時 x=1,y=0;

2,ab!=0 時

設 ax1+by1=***(a,b);

bx2+(a mod b)y2=***(b,a mod b);

根據樸素的歐幾里德原理有 ***(a,b)=***(b,a mod b);

則:ax1+by1=bx2+(a mod b)y2;

即:ax1+by1=bx2+(a-(a/b)*b)y2=ay2+bx2-(a/b)*by2;

根據恆等定理得:x1=y2; y1=x2-(a/b)*y2;

這樣我們就得到了求解 x1,y1 的方法:x1,y1 的值基於 x2,y2.

上面的思想是以遞迴定義的,因為 *** 不斷的遞迴求解一定會有個時候 b=0,所以遞迴可以結束。

擴充套件的歐幾里得演算法求逆元

3樓:匿名使用者

數對 x,y ,使得 ***(a,b)=ax+by。

c++語言實現

#include

#include

using namespace std;

int x,y,q;

void extend_eulid(int a,int b)else

}int main()

你給的題目實際上就是: 給定 a 和b。

a 要有逆元 , 那麼***( a , b ) = 1假設a的逆元 為x , 那麼就有 a * x mod b = 1

也就是 a * x + b * y = 1上面的程式中輸入a和b就可以求出對應的x和y。

其中 x 就是 a的逆元

用c語言編制的求模逆元的擴充套件歐幾里德演算法,只要能基本上實現這個功能就行

4樓:匿名使用者

//舉例 3x+4y=1 ax+by=1

//得到一組解x0=-1,y0=1 通解為x=-1+4k,y=1-3k

返回a,b的***,同時求的一組滿足題目的最小正整數解

ans=extend_***(b,a%b,x,y);t=x;x=y;y=t-(a/b)*y;

return ans;

}//(a/b)%mod=c 逆元為p,(p*b)%mod=1

//(a/b)*(p*b)%mod=c*1%mod=c

// (p*b)%mod=1 等價於 p*b-(p*b)/mod*mod=1其中要求p,b已知 等價於 ax+by=1

//其中x=p(x就是逆元),y=p/mod,a=b,b=b*mod 那麼呼叫extend_***(b,b*mod,x,y)即可求(a/b)%mod的逆元等價於a*p%mod

int main()

cout<<"x="<

麻煩採納,謝謝!

這個矩陣的特徵向量是怎麼求出來的

1.先求出矩陣的特徵值 a e 0 2.對每個特徵值 求出 a e x 0的基礎解系a1,a2,as 3.a的屬於特徵值 的特徵向量就是 a1,a2,as 的非零線性組合 滿意請採納.矩陣的特徵向量怎麼求?1.先求出矩陣的特徵值 a e 02.對每個特徵值 求出 a e x 0的基礎解系a1,a2,...

幫我看下這個逆矩陣是怎麼求出來的?我做出來的和它剛好是轉置矩

答案是對du的。估計zhi你用的是用伴隨dao矩陣的方式做出來的,專你仔細看看伴隨矩陣中元屬素代數餘子式的排列方式,估計你弄反了。a11 a21 a31 a12 a22 a32 a13 a23 a33 第一行元素的代數餘子式是在第一列。矩陣求逆矩陣的兩種方法做出來的答案怎麼不一樣 你好!你說的是用伴...

怎麼才能知道數是用多少的平方求出來的

只須把這個數開方即可。如 12是 12 的平方。開平方法的計算步驟如下 1 將被開方數的整數部分從個位起向左每隔兩位劃為一段,用撇號分開分成幾段,表示所求平方根是幾位數。2 根據左邊第一段裡的數,求得平方根的最高位上的數。3 從第一段的數減去最高位上數的平方,在它們的差的右邊寫上第二段陣列成第一個餘...