線性同余式

2021-06-12 05:37:12 字數 1427 閱讀 6283

4、c++源**

編寫乙個程式解線性同余式ax≡c (mod m),為了使得到的所有解都在[0,m-1]範圍內,需要簡單的修改一下擴充套件的歐幾里得演算法,

為了使更簡單的處理,要求a,c,m都為正整數,**如下:

struct triple

explicit triple(int g, int s, int t)

:g(g), s(s), t(t)

int g; //最大公約數

int s; //a的係數

int t; //b的係數

};

/*

@擴充套件的歐幾里得演算法

@輸入:正整數a,b

@輸出:三元組(g, s, t)使得sa + tb = g, 並且保證s > 0

*/triple euclidex(int a, int b)

if (t0.s < 0)

return t0;

}

/*

@功能:求解線性同余式 ax≡c (mod m)

@前置條件:a, c, m是正整數

@引數:a, c, m

@返回值:pair, bool>

bool變數用於判斷線性同余式是否有解,

vector用於存放線性同余式的解集

*/pair, bool> linearcongruence(int a, int c, int m)

5、測試

測試線性同余式893x ≡ 266(mod 2432) 和 943x ≡ 381(mod 2576)驅動程式如下:

int main()

{ int a, c, m;

cout

cin>>a>>c>>m;

pair, bool> p = linearcongruence(a, c, m);

if (p.second)

{vectorvec = p.first;

cout執行結果如下圖:

數論 一次同余式

同余式 設f x an x n an 1 x n 1 a1 x a0 n 1,ai z f x z x 則f x 0 modm 是模m的同余式,若an 0 mod m 則f x 0 modm 的次數為n次 cr是該同余式的解 f r 0 mod m 例 x 5 2x 4 x 3 2x 2 2x 3 ...

同余式判斷等式(C 的實現)

從十進位制數的定義來看,任意一十進位制數都可以按全展開成n 10 n的形式,而對任意正整數i有 10 i 1 mod3 10 i 1 mod9 所以在判斷某個等式 乘法,加法,減法計算 是否成立時,可以將等號兩邊的十進位制數按權展開,再判斷等式兩邊是否模9 或者模3 同餘,進而判斷等式是否成立。利用...

關於計算中的「同余式」以及取模等問題

100除以7的餘數是2,意思就是說把100個東西七個七個分成一組的話最後還剩2個。餘數有乙個嚴格的定義 假如被除數是a,除數是b 假設它們均為正整數 那麼我們總能夠找到乙個小於b的自然數r和乙個整數m,使得a bm r。這個r就是a除以b的餘數,m被稱作商。我們經常用mod來表示取餘,a除以b餘r就...