同餘定理(歐幾里得演算法)
阿新 • • 發佈:2018-11-09
如果 (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,的公約數。 把兩個大的數轉化為兩個小的數。
拓展歐幾里得演算法 (挖坑回來寫)