GCD, LCM
최대공약수, 최소공배수
최대공약수 (GCD) - 유클리드 호제법
int gcd(int n, int m)
{
while(n) {
int t = m%n;
m = n;
n = t;
}
return m;
}
최소공배수 (LCM)
int lcm(int n, int m)
{
int g = gcd(n, m);
return g*(n/g)*(m/g);
}
페르마의 소정리에 이용되는 원리
먼저 a와 p가 서로소라고 하자. 이때 1a,2a,⋯,(p−1)a는 mod p 에 대해 서로 합동이 아니다. 또한 이중에서 p의 배수인 것은 없으므로, 이 ka들을 p로 나눈 나머지들의 집합은 {1,2,⋯,p−1}와 같다.