1. 程式人生 > >同餘定理(歐幾里得演算法)

同餘定理(歐幾里得演算法)

如果  (a-b)%m==0  那麼 a%m==0  b%m==0

a,b關於模m同餘。

 

求最大公約數

#include "pch.h"
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int gcd(int a, int b)
{
    while (a != b)
    {
        
if (a > b) a = a-b; else b = b - a; } return a; } int main() { int x, y; cin >> x >> y; cout << gcd(x, y) << endl; return 0; }
更相減損法  
#include "pch.h"
#include<iostream>
#include<cstdio>
#include<cmath>
#include
<algorithm> #include<string> #include<cstring> using namespace std; int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a%b); } int main() { int x, y; cin >> x >> y; cout << gcd(x, y) << endl; return 0; }
歐幾里得演算法

gcd(a,b)=gcd(b,a mod b);

設d是a,b的最大公約數,a=kd,b=ld;  

所以d也是a,b,r,的公約數。  把兩個大的數轉化為兩個小的數。

 

拓展歐幾里得演算法 (挖坑回來寫)