나눗셈 알고리즘(Division Algorithm)
a∈Z, b∈N이면 a=bq+r, 0≤r<|b|를 만족시키는 정수 q와 r이 유일하게 존재한다.
b가 0이 아닌 정수인 경우에도 성립하지만 0이면 a=r이고 자연수인 경우가 증명되면 음수는 부호만 바꾸면 되므로 생략한다.
이 알고리즘을 사용하기 전에 정수 q와 r이 존재하는지와 그 값들이 유일한지에 대해 증명해야 한다.
집합 S에 대해 S=a−tb∣t∈Z,a−tb≥0이라고 정의하자. b는 자연수이므로 |b|≥1,|a|b≥|a|가 성립하고 t=−|a|를 집합 S에 대입하여 a−(−|a|b)=a+|a|b≥a+|a|≥0이므로 a−tb≥0을 만족하는 정수 t가 하나라도 존재하므로 집합 S는 공집합이 아니다. 그리고 정의에 따라 적어도 S는 N∪0의 부분집합임을 확인할 수 있다. 그러므로 S는 정수 0을 포함한 자연수의 집합이므로 최소원소를 가지며 그 값을 r이라고 하면 a−qb=r을 만족시키는 적당한 정수 q가 존재함을 알 수 있고 r≥0을 만족함이 증명된다.
r<b를 증명할 땐 결론을 부정하여 r≥b라고 가정하자. 가정에 따라 r−b=a−qb−b=a−(q+1)b≥0이 되고 집합 S의 정의에 따라 a−(q+1)b∈S이다. 그런데 r−b<r이므로 r이 최소원소라는 앞서 확인한 내용에 모순된다. 따라서 처음 결론을 부정한 결과가 모순임이 확인되었으므로 r < b임이 확인되어 0≤r<b가 성립한다.
a=bq+r(0≤r<b)를 만족하는 정수 q와 r이 존재함을 증명하였다. 이 정수들의 유일성을 증명하기 위해 정수 q1,q2와 0≤r1,r2<b를 만족하는 정수 r1,r2에 대해 a=bq1+r1=bq2+r2를 만족한다고 하자. 정수 q와 r에 대해 정리하면 b(q1−q2)=r2−r1이 되고 이 때 r2−r1의 범위는 −b<r2−r1<b이다. (∵ 0≤r1,r2<b이기 때문)
b(q1−q2)에 대해 b는 자연수이므로 최소정리(b≥1)에 따라 −1<q1−q2<1가 되고 q1,q2는 정수이므로 부등식이 성립하기 위해선 q1−q2=0이어야 하며 그와 함께 r1=r2도 만족한다. 따라서, a=bq+r(0≤r<b)를 만족시키는 정수 q,r은 유일하게 존재한다.
유클리드 호제법(Euclidean Algorithm)
gcd(a,b)=gcd(b,r)=⋯=gcd(rn−1,rn)=rn
참고정리. 정수 a, b, q, r이 a=bq+r를 만족한다고 하자. 그러면 gcd(a,b)=gcd(b,r)이 성립한다.
d1=gcd(a,b),d2=gcd(b,r)이라고 하자.
d1|a,d1|b⟹d1|bq+r, d1|b⟹d1|r이므로 d1|d2
∵ d1이 r의 약수이므로 b와 r의 공약수가되는데 b와 r의 최대공약수는 d2이므로 d1은 d2의 약수이다.
d2|b,d2|r⟹d2|b, d2|a−bq⟹d2|a이므로 d2|d1
∵ d2가 a의 약수이므로 a와 b의 공약수가 되는데 a와 b의 최대공약수는 d1이므로 d2는 d1의 약수이다.
서로 약수와 배수관계이므로 d1=d2이며 따라서 gcd(a,b)=gcd(b,r)이 성립한다.
참고정리를 증명하였으므로 이를 활용하여 유클리드 호제법을 증명하자.
a,b∈Z라 하면 나눗셈 알고리즘에 의해 a=bq+r,(0≤r<b)를 만족하는 정수 q,r이 유일하게 존재한다.
만약 r=0이면 gcd(a,b)=b가 되고 r≠0이면 b=rq1+r1,(0≤r1<r)을 만족하는 정수 q1,r1이 유일하게 존재한다. 그리고 앞에서 말한 것과 비슷하게 r1=0이면 gcd(a,b)=gcd(b,r)=r을 만족한다.
만약 n번째에 이를 때까지 0이 되지 않으면 밑의 식처럼 일반식으로 나타낼 수 있다.
r=r1q2+r2,(0≤r2<r1)
⋯
rn−1=rnqn+1
결론적으로 gcd(a,b)=gcd(b,r)=⋯=gcd(rn−1,rn)=rn이 된다.
다항식이나 큰 수의 최대공약수를 구하는데 유클리드 호제법이 자주 사용된다.
정리: 최대공약수의 연산법칙
a,b,q∈Z이라고 하면 다음의 성질들이 성립한다.
gcd(a,b)=gcd(b,a)
gcd(a,b)=gcd(a,b±qa)
d1=gcd(a,b), d2=gcd(a,b±qa)라 하자
- d1|a, d1|b⟹d1|b±qa, d1|a인데 gcd(a,b±qa)=d2이므로 d1|d2
- d2|a, d2|b±qa⟹d2|a, d2|b인데 gcd(a,b)=d1이므로 d2|d1
따라서 d1=d2이므로 gcd(a,b)=gcd(a,b±qa)이다.
gcd(a,1)=1
gcd(a,b)=gcd(ac,b) 단, gcd(c,b)=1
gcd(a,b)=d1, gcd(ac,b)=d2라 하자
- d1|a, d1|b⟹d1|ac, d1|b인데 gcd(ac,b)=d2이므로 d1|d2
- d2|ac, d2|b와 gcd(b,c)=1이므로 d2|a, d2|b에 따라 d2|d1
따라서 d1=d2이므로gcd(b,c)=1일 때 gcd(a,b)=gcd(ac,b)가 성립한다.
베주 항등식(Bezout's identity)
위의 최대공약수의 연산법칙 증명은 조금 부족한 느낌이 있다. 이 내용을 좀 더 엄격하게 증명해보려 찾아본 결과 베주 항등식에 대한 내용을 정리할 필요성을 찾았다.
적어도 둘 중 하나가 0이 아닌 정수 a, b가 있고 gcd(a,b)를 d라고 하자.
- d=ax+by를 성립하게 만드는 정수 x, y가 반드시 존재한다.
- d는 정수 x, y에 대하여 ax+by 형태로 표현할 수 있는 가장 작은 자연수이다.
- 정수 x, y에 대하여 ax+by로 표현되는 모든 정수는 d의 배수이다.
집합 S에 대해 S=m|m=ax+by>0,(x,y∈Z)라 정의하면 집합 S는 자연수의 부분집합이고 S가 공집합이 아님을 확인하면 자연수의 정렬성에 따라 최소원소를 가진다.
만약 a≠0일 때 |a|=a(±1)+b⋅0∈S, a=0이면 b≠0으로 |b|∈S가 성립하여 집합 S는 최소한 |a|,|b| 중 하나는 원소로 가지므로 공집합이 아니기 때문에 ax+by꼴로 나타나는 값 중 최소값이 존재한다. 그 최소값을 d라 하고 d=ak+bl이라고 가정하자.
S의 임의의 원소 x에 대해 나눗셈 정리에 따라 x=qd+r(0≤r<d)가 성립함을 알 수 있다. 만약 3번을 부정하여 x가 d의 배수가 아니라고 해보자. 그러면 r≠0이므로 x는 자연수이다. 그리고 x는 집합 S의 원소이기 때문에 x=as+bt (s,t∈Z)로 표현할 수 있다. 앞에서 x=qd+r을 r에 대해 정리하면 r=x−qd가 되는데 앞에서 x,d에 대해 ax+by꼴로 정했으므로 이를 대입해서 정리하면 다음과 같다.
x−qd=as+bt−q(ak+bl)=a(s−qk)+b(t−ql)∈S
즉, 위의 식에 따라 r도 S의 원소임을 확인하였지만 r은 x를 d로 나누었을 때의 나머지이므로 r<d이다. 그러나 d는 집합 S의 최소원소이므로 이에 모순되어 x는 d의 배수여야 한다. 그리고 x는 S의 임의의 원소라고 정의했으므로 집합 S의 모든 원소는 d의 배수이다.
문제에서 a,b 중 하나는 0이 아닌 정수일 때 |a|혹은 |b|를 원소로 갖는다고 했으므로 d는 a,b의 공약수이다. 물론 둘 중 하나가 0인 경우엔 0이 아닌 모든 수는 0의 약수이므로 모순되지 않는다. 그러나 아직 gcd(a,b)=d를 증명하지 않았다.
d가 최대공약수임을 증명하기 위해 새로운 임의의 공약수를 가정하자. 만약 e도 a,b의 공약수라고 두면 a=a′e, b=b′e라고 표현할 수 있고 앞서 d=ak+bl=a′ek+b′el로 표현할 수 있어 d는 e의 배수이다. 즉, 임의의 a와 b의 공약수는 모두 d의 약수이므로 gcd(a,b)=d가 성립한다.
베주 항등식을 이용한 최대공약수의 연산법칙 증명
gcd(a,b)=gcd(a,b±qa)
gcd(a,b)=d1, gcd(a,b±qa)=d2라 하면 베주 항등식에 따라 d1|b±qa이고 d2가 최대공약수이므로 d1|d2이다. d2에 대해서도 d2|b±qa∓q⋅a=b이고 gcd(a,b)=d1이므로 d1=d2
gcd(a,b)=gcd(ac,b) 단, gcd(b,c)=1
gcd(a,b)=d1, gcd(ac,b)=d2라 하고 베주 항등식에 따라 d1=ax1+by1, d2=acx2+by2인 정수 x1,y1,x2,y2가 존재한다고 하자. 그리고 gcd(b,c)=1에 따라 정수 x,y에 대해 cx+by=1이라고 가정한 뒤 양변에 d1을 곱하여 정리하면d1=d1cx+d1by이 된다. 우변의 x의 계수를 ac로 맞추기 위해 앞서 정의한 d1을 대입하면 (ax1+by1)cx+d1by=ac(x1x)+b(cy1x+d1y)=d1이 되어 d2|d1이 성립한다.
마찬가지로 cx+by=1 양변에 d2를 곱하면 d2=cd2x+bd2y가 되고 앞서 했듯이 계수 ac를 만들기 위해 우변에 대입하면 c(acx2+by2)x+bd2y=d2이고 d1의 꼴로 바꾸면 a(c2x2x)+b(cxy2+d2y)=d2가 되어 d1|d2가 성립한다.
예제
n3+2nn4+3n2+1가 모든 정수 n에 대하여 기약분수임을 보여라.
gcd(1,n)=1이므로 gcd(n3+2n,n4+3n2+1)=1되어 서로소이므로 모든 정수 n에 대해 기약분수이다.
두 수 12378, 3054의 최대공약수를 구하여라.
위 그림에 따라 gcd(6,18)=6으로 12378과 3054의 최대공약수는 6이다.
a∈N일 때, gcd(a7+1,a3+1)=a+1임을 증명하라.
따라서, a7+1=(a4−a)(a3+1)+(a+1)이고 a3+1=(a2−a+1)(a+1)로 gcd(a7+1,a3+1)=a+1이다.
a=11,111,111과 b=11,111,...,111 (1이 2020개)의 최대공약수를 구하라.
예를 들어 k=1,111 ... 111,111 (1이 18개)를 a로 나눠보자. 그럼 k=102⋅a(100+108(2−1))+11이 될 것이다. 즉 18=8⋅2+2이고 피제수와 몫 그리고 나머지를 각각 s, q, r이라 하면 k=10r⋅a(1+10s+⋯+108(q−1))+11⋯11 (1이 r개) 꼴로 나타날 것이다.
마찬가지로 2020=8⋅252+4이므로 b=104a(1+⋯+108⋅251)+1111이 되어 gcd(a,b)=gcd(a,1111)이다. 즉 최대공약수는 1111이다.
n3+7과 3n2+3n+1이 서로소가 아님을 만족하는 양의 정수 n 중 가장 작은 값을 구하여라.
gcd(n3+7,3n2+3n+1)=gcd(3n3+3n2+n−(3n3+21),3n2+3n+1)
=gcd(3n2+n−21,3n2+3n+1)=gcd(3n2+n−21,3n2+3n+1−(3n2+n−21))
=gcd(3n2+n−21,2n+22)=gcd(3n2+n−21−3n(n+11),n+11)
=gcd(−(32n+21),n+11)=gcd(32n+21,32(n+11)−(32n+21))
=gcd(32n+21,331)로 정리할 수 있는데 331은 소수이므로 양의 정수 n값이 존재하지 않는다. 그렇다면 그 이전으로 넘어가서 gcd(32n+21,n+11)의 경우 n+11=331을 만족하는 양의 정수 n값이 존재한다.
따라서, n3+7과 3n2+3n+1이 서로소가 아님을 만족하는 가장 작은 양의 정수 n은 320이다.
52000−24⋅999−25, 52002−24⋅1000−25, 52004−24⋅1001−25의 최대공약수를 구하여라.
세 수의 최대공약수를 d라 하면 각각에 대해 da, db, dc로 표현할 수 있다. 그리고 gcd(da,db,dc)=gcd(d(c−b),d(b−a))이므로 대입하여 정리하면 gcd(52002(25−1)−24,52000(25−1)−24)이므로 24gcd(52002−1,52000−1)을 구하면 된다.
유클리드 호제법에 따라 gcd(52002−1−52000⋅25+25,52000−1)=gcd(52000−1,52−1)이고 두 제곱수의 차의 형태를 띠고 있으므로 좌항은 우항으로 인수분해가 된다. 따라서, gcd(52002−1,52000−1)=24이고 앞서 24를 따로 앞으로 옮겼기에 문제에서 제시된 세 수의 최대공약수는 242=576이다.
작성에 도움이 된 자료
- KMO 수학경시 정수론, 장환수학, 임장환 저
'Math > Number theory' 카테고리의 다른 글
정수론 | 약수와 배수 유형문제 (0) | 2020.03.06 |
---|---|
정수론 | 확장 유클리드 알고리즘, 선형 디오판토스 방정식 (0) | 2020.02.27 |
정수론 | 양의 정수의 약수개수와 약수의 총합 (0) | 2020.02.19 |
정수론 | 약수와 배수 (0) | 2020.02.15 |
정수론 | 자연수의 정렬원리와 수학적 귀납법 (0) | 2020.01.08 |