計算機中常用基礎數論知識雜談

2022-09-09 20:42:27 字數 1904 閱讀 3057

最大公約數,英文是 \(\mathcal\),簡稱 \(\gcd\)。

兩個數 \(x,y\)​ 的最大公約數,經常表示為 \(\gcd(x,y)\)​ 或者在不被誤解的情況下可以表示為 \((x,y)\)​,其定義為 \(g_\ s.t.\ g|x,g|y\)​​。

同理可以定義 \(n\)​​ 個數的 \(\gcd\)。

性質 \(1\):不妨 \(x\le y\),\(\gcd(x,y)=gcd(x,y\%x)\)​。

性質 \(2\):\(\gcd(x,0)=x\)。

根據上述 \(2\) 個性質,即可寫出**:

ll gcd(ll x,ll y)
需要注意的是,輾轉相除時一定要確認好大小關係,否則有可能陷入死迴圈。

最小公倍數,英文是 \(\mathcal\),簡稱 \(\mathcal}\)​。

兩個數 \(x,y\)​ 的最小公倍數,經常表示為 \(\operatorname(x,y)\)​ 或者在不被誤解的情況下可以表示為 \([x,y]\)​,其定義為 \(g_\ s.t.\ x|g,y|g,g\neq 0\)​​。

需要注意,一般情況下此處的 \(x,y\) 需要大於 \(0\),但在 \(\gcd\) 中則不需要。

性質 \(3\)​:\(\gcd(x,y)\times \operatorname(x,y)=x\times y\)​​。

因此我們可以直接使用這個性質利用上面的 \(\gcd\) 函式計算兩數 \(\operatorname\)​​。

同理可以定義 \(n\) 個數的 \(\operatorname\)。

\(\mathcalut}\)​ 定理

即,對 \(n\)​ 個整數 \(a_1,a_2,\dots a_n\)​ ,不定方程 \(a_1x_1+a_2x_2+\dots +a_nx_n=c\) 有整數解 \((x_1,x_2\dots x_n)\)​ 的充要條件是 \(\gcd(a_1,a_2,a_3\dots a_n)|c\)。

證明略。

根據裴蜀定理,可以求解 \(2\) 元的不定方程。

由於也是通過輾轉相除求解故稱為擴充套件 \(\mathcal\)​ 演算法,被稱為 \(\operatorname\)。

**:

ll exgcd(ll a,ll b,ll &tx,ll &ty)

ans=exgcd(b,a%b,tx,ty);

ll tp=tx;tx=ty;ty=tp-a/b*ty;

return ans;

}

\(\mathcal\),高斯消元的全名。

主要用於解決 線性方程組 的解,可以判斷無解,有無窮多組解的情況。

線性方程組 形如:

\(\begina_x_1+a_x_2+\dots +a_x_n=a_\\\dots\\a_x_1+a_x_2+\dots +a_x_n=a_\end\)

演算法的主要部分即兩兩消元。

int main()//輸入部分

int del=0;

for(int i=1;i<=n;i++)

if(!now) continue;//沒有找到該項係數不為0的方程。

del++;

for(int j=0;j<=n;j++) swap(a[now][j],a[del][j]);

for(int j=1;j<=n;j++)

} //del 代表的是已經確定下來的x數量,以上就是消元的過程

if(del==n) for(int i=1;i<=n;i++) printf("x%d=%.2lf\n",i,a[i][0]/a[i][i]);

else

if(flag) puts("0");

else puts("-1");

} return 0;

}

計算機中常用的快捷鍵

1 ctrl c 複製 2 ctrl x 剪下 3 ctrl v 貼上 4 ctrl a 全選 5 ctrl z 撤銷鍵入 6 ctrl y 重複鍵入 7 ctrl s 儲存 8 ctrl f5 強制重新整理 9 ctrl w 關閉 10 ctrl f 查詢 11 ctrl esc 開始選單 12 ...

基礎知識 計算機中的移位運算

移位運算子就是在二進位制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為三種 左移 帶符號右移 和 無符號右移 在移位運算時,byte short和char型別移位後的結果會變成int型別,對於byte short char和int進行移位時,規定實際移 動的次數是移動次數和32的餘數,也...

計算機基礎知識 計算機基礎知識彙總

計算機專業的那六大件 組成原理,作業系統,資料庫,編譯原理,計算機網路,資料結構,其次還得加上分布式的基礎知識,因為現在的系統都變成分布式的了。如果你是做應用層開發的,那幾門課程中的有些內容和日常工作關聯度不大,我挑那些最重要的來說一說,也算是乙個最小集合吧!1,計算機組成原理 如果你不是做作業系統...