Processing math: 5%
본문 바로가기
CS/이산수학

이산수학 - 정수론, 나눗셈, 베주의 항등식, 유클리드 호제법, 나머지 연산, 소수와 소인수 분해, RSA 암호

by Renechoi 2024. 5. 15.

1. 나눗셈 

 

a는 정수이고 b는 양의 정수라 할 때, 다음을 만족하는 유일한 정수 q, r이 존재한다.

a=bq+r단,0r<b

 

 

이 정리는 어떤 정수 a를 양의 정수 b로 나누면, 몫 q와 나머지 r가 존재하며, 나머지 r는 0 이상 b 미만의 범위에 속한다는 것을 의미한다. 

예를 들어, a=17이고 b=5인 경우를 생각해보자. a를 b로 나누면 다음과 같이 나타낼 수 있다.

17=53+2

여기서 몫 q=3이고 나머지 r=2이다. 또한, 나머지 r는 0 이상 5 미만의 범위에 속한다.

(1) 약수와 배수 

a, b가 정수이고 a0일 때, b=ac를 만족시키는 정수 c가 있다면 “a가 b를 나머지 없이 나눈다” 또는 “a는 b를 정제한다” 또는 “b는 a로 나누어떨어진다”고 표현한다. 이 경우 a는 b의 약수(divisor) 또는 인수(factor), b는 a의 배수(multiple)라고 하며, 기호 ab로 나타낸다. 만약 a가 b를 나누지 않을 때에는 기호 a로 쓴다.

 

 

나누어떨어짐(divisibility)의 성질 

a를 0이 아닌 정수, b와 c를 임의의 정수라고 할 때
1. ab이고 ac이면, a(b+c)이다.
2. ab이면, abc이다.
3. ab이고 bc이면, ac이다.

 

증명 

(1) ab이고 ac이면, a(b+c)이다.

가정으로부터 b=as이고 c=at인 정수 s,t가 존재한다. b+c=as+at=a(s+t)이므로, b+c는 a로 나누어떨어진다.


(2) ab이면, abc이다.

가정으로부터 b=ad인 정수 d가 존재한다. 양변에 c를 곱하면 bc=adc이고 dc는 정수이므로, bc는 a로 나누어떨어진다.

 

(3) ab이고 bc이면, ac이다.

가정으로부터 b=ad이고 c=be인 정수 d,e가 존재한다. c=be=(ad)e=a(de)이므로, c는 a로 나누어떨어진다. Q.E.D.

 

 

(2) 최대공약수 

0이 아닌 두 정수 a,b에 대하여 da이고 db인 최대의 양의 정수 d를 a와 b의 최대공약수라 하고 d=gcd(a,b)로 표시한다.

- 공약수 (common divisor): 2개 이상의 정수에서 공통인 약수
- 0이 아닌 두 정수의 최대공약수는 유일하게 존재함.
gcd(a,b)1
gcd(a,b)=1인 경우, a,b는 서로소 (relatively prime)라고 함.

 

 

베주의 항등식 

적어도 하나는 0이 아닌 정수 a,b가 임의로 주어져 있다고 하자. 그러면 gcd(a,b)=d라고 할 때, ax+by=d를 만족하는 정수 x,y가 존재한다.

a,b가 서로소 gcd(a,b)=1
  x,yZ,ax+by=1

 

 

📌 gcd(a,b) = gcd(a, a-b)임을 증명하시오. 

 

✘ 증명 : 

 

gcd(a,b)=d,gcd(a,ab)=e라고 하자.

먼저, d는 a와 b의 공약수이므로 a=mdb=nd라고 둘 수 있다 (m,n은 정수). 

이를 통해 ab=mdnd=(mn)d가 된다. 따라서, d는 ab의 약수이기도 하다. 즉, d(ab)임을 알 수 있다. 또한, d는 a와 b의 공약수이므로 da이고 db이다.

반대로, e는 a와 ab의 공약수이므로 a=seab=te라고 둘 수 있다 (s,t는 정수).

이를 통해 b=a(ab)=sete=(st)e가 된다. 따라서, e는 b의 약수이기도 하다. 즉, eb임을 알 수 있다. 또한, e는 a와 ab의 공약수이므로 ea이고 e(ab)이다.

이로써, d는 a와 b의 공약수이고, e는 a와 ab의 공약수이므로, 다음과 같은 관계를 만족하게 된다.

de그리고ed

따라서, d=e가 되어 gcd(a,b)=gcd(a,ab)임을 증명할 수 있다.

 

 

유클리드 호제법 

 

최대공약수는 기원전 300년 전부터 사용했던 유클리드 호제법을 사용해서 쉽게 계산할 수 있다. 

 

a,b,q,r이 정수일 때, a=bq+r이면 gcd(a,b)=gcd(b,r)이다.

 

✘ 증명 : 

 

gcd(a,b)=G라 하자. 그럼 적당한 서로소인 정수 A,B에 대해 a=AGb=BG가 성립한다. 이것을 a=bq+r에 대입하면,

AG=BGq+r

이고,

r=AGBGq=G(ABq)

이다. 따라서 G는 b와 r의 공약수임을 알 수 있다. 

만일 B와 ABq가 서로소이면, 즉 gcd(B,ABq)=1이면 gcd(b,r)=G가 되므로 증명이 끝난다. 

이제 gcd(B,ABq)=m (여기서 m은 1이 아닌 정수)라고 두면 적당한 서로소인 정수 s,t에 대해 B=msABq=mt가 성립한다.

이것을 다시 A=mt+Bq=mt+msq=m(t+sq)로 나타낼 수 있다. 따라서, A와 B는 m의 배수임을 알 수 있다. 그러나 이는 A와 B가 서로소라는 가정에 모순이 된다. 

따라서 gcd(B,ABq)=1이어야 하며, 이로 인해 gcd(b,r)=G가 성립한다. 

결론적으로, gcd(a,b)=gcd(b,r)임을 증명할 수 있다.

 

알고리즘 

유클리드 호제법의 정리를 알고리즘으로 표현하면 다음과 같다. 

 

1. 만일 ba이면 gcd(a,b)=b이다.

2. 만일 ba이면 다음과 같은 나눗셈 알고리즘을 적용한다.

a=bq+r0<r<bb=rq1+r10<r1<rr=r1q2+r20<r2<r1r1=r2q3+r30<r3<r2rn2=rn1qn+rn0<rn<rn1rn1=rnqn+1+0

따라서 gcd(a,b)=gcd(b,r)=gcd(r,r1)==gcd(rn1,rn)=rn이 된다.

 

 

📌 예제: 유클리드 호제법을 통해 gcd(287, 91)을 구하시오. 

 

✘ 풀이:


1. 첫 번째 단계:
287=91×3+14
여기서 287을 91로 나눈 몫은 3이고, 나머지는 14이다.

2. 두 번째 단계:
91=14×6+7
여기서 91을 14로 나눈 몫은 6이고, 나머지는 7이다.

3. 세 번째 단계:
14=7×2+0
여기서 14를 7로 나눈 몫은 2이고, 나머지는 0이다.

나머지가 0이 되었으므로, 이때의 나누는 수가 최대공약수이다. 따라서,
gcd(287,91)=7

결론:

gcd(287,91)은 7이다.

 

 

📌 예제: 24m X 15m 크기의 직사각형 바닥에 빈자리가 없도록 타일을 깔고자 한다. 동일한 크기의 정사각형 타일만 사용한다고 할 때, 유클리드 호제법을 이용하여 필요한 타일의 최소 개수를 구하시오. 

 

✘ 풀이: 


유클리드 호제법을 이용하여 24m X 15m 크기의 직사각형 바닥에 빈자리가 없도록 깔 수 있는 동일한 크기의 정사각형 타일의 한 변의 길이를 구해보자.

1. 두 수 24와 15의 최대공약수를 구한다.

   첫 번째 단계:
   24=15×1+9
   여기서 24를 15로 나눈 몫은 1이고, 나머지는 9이다.

   두 번째 단계:
   15=9×1+6
   여기서 15를 9로 나눈 몫은 1이고, 나머지는 6이다.

   세 번째 단계:
   9=6×1+3
   여기서 9를 6으로 나눈 몫은 1이고, 나머지는 3이다.

   네 번째 단계:
   6=3×2+0
   여기서 6을 3으로 나눈 몫은 2이고, 나머지는 0이다.

   나머지가 0이 되었으므로, 이때의 나누는 수가 최대공약수이다. 따라서,
   gcd(24,15)=3

2. 한 변의 길이가 3m인 정사각형 타일을 사용하여 24m X 15m 크기의 직사각형 바닥을 빈자리 없이 깔 수 있다.

3. 24m X 15m 직사각형을 한 변의 길이가 3m인 정사각형으로 나눈다.

   가로에 필요한 타일의 개수:
   24÷3=8

   세로에 필요한 타일의 개수:
   15÷3=5

4. 따라서 필요한 타일의 최소 개수는 가로와 세로에 필요한 타일 개수를 곱한 값이다.
   8×5=40

필요한 타일의 최소 개수는 40개이다.

 

 

 

2. 나머지 연산 

 

(1) 모듈로 합동 

a, b가 정수이고 m이 양의 정수일 때, abm으로 나누어떨어진다면 ab는 모듈로-m 합동이라고 한다. 모듈로-m 합동(congruence)은 기호로 ab(modm)으로 표기한다.


m(ab)   ab(modm)

25 - 11 = 14 = 2 × 7 7 | (25 - 11) 25 11 (mod7)
25 = 3 × 7 + 4 and 11 = 1 × 7 + 4  25 mod7=11mod7

 

 

a,b가 정수이고 m이 양의 정수라 하자. 그러면 ab(modm)amodm=bmodm과 필요충분조건이다.

 

 

 

(2) 합동의 기본 정리 

 

m>1이 고정되고 a,b,c,d를 임의의 정수라 할 때, 다음 성질이 성립한다.

1. aa(modm)
2. ab(modm)이면 ba(modm)이다.
3. ab(modm)이고 bc(modm)이면 ac(modm)이다.
4. ab(modm)이고 cd(modm)이면 a+cb+d(modm)이고 acbd(modm)이다.
5. ab(modm)이면 a+cb+c(modm)이고 acbc(modm)이다.
6. ab(modm)이면 모든 양의 정수 k에 대해 akbk(modm)이다.

 

 

3. 소수와 소인수 분해 

 

1보다 큰 모든 자연수는 최소한 두 개의 자연수로 나누어 떨어진다. 왜냐하면, 1보다 크 자연수는 항상 1과 자기 자신으로 나누어 떨어지기 때문이다. 어떤 자연수는 1과 자기 자신 외에는 약수를 가지지 않는데 이러한 자연수를 소수(prime)라고 한다. 

 

 

(1) 소수와 합성수 

1보다 큰 자연수 pp의 양의 인수가 1과 p뿐일 때 소수라고 한다. 1보다 크면서 소수가 아닌 자연수는 합성수라고 부른다.

N={1}{소수들}{합성수들}
- 소인수: 주어진 자연수의 약수 중에서 소수인 것
- 소인수분해: 합성수를 소인수들의 곱으로 표현하는 것.

 

 

보조정리 

1. p가 소수이고 pab이면, pa 또는 pb이다.
2. p가 소수이고 pa1a2an이면, 1kn인 k에 대해 pak이다.
3. p,q1,q2,,qn이 소수이고 pq1q2qn이라면, 1kn인 k에 대해 p=qk이다.

 

 

산술의 기본정리 

n이 2 이상의 자연수이면 n은 소수이거나 소수의 곱으로 유일하게 표현할 수 있다.

- Fundamental theorem of arithmetic
- 소인수분해: 합성수를 소인수들의 곱으로 표현하는 것.

25200=25×32×52×71
17640=23×32×51×72

 

 

✘ 증명: 

 

n은 소수 또는 합성수이다. n이 소수이면 주어진 정리는 참이므로 n이 합성수인 경우를 가정하자. n이 합성수이면, 1<d<n이며 dn인 정수 d가 존재한다. 이를 만족하는 정수 중에서 가장 작은 p1을 선택한다면, p1은 소수이어야 한다. p1이 합성수라면 p1의 인수 중 가장 작은 값이 아니기에 모순이다. n=p1n1으로 표현할 수 있고, p1은 소수가 되며 1<n1<n이다.

만약 n1이 소수이면 n은 소수의 곱으로 표현되고 정리는 참이 되므로 n1은 합성수라고 가정하자. 그러면 동일한 논리의 적용으로 n1의 양의 약수 중 소수인 것이 존재한다. 그것을 p2라고 하면 n1=p2n2로 표현할 수 있고 1<n2<n1이다. 따라서 n=p1p2n2가 성립한다. 만약 n2가 소수이면 n은 소수의 곱으로 표현되고 정리는 참이 되므로 n2는 합성수이고, n2의 양의 약수 중 소수인 것이 존재한다. 그것을 p3라고 하면 n2=p3n3로 표현할 수 있고 1<n3<n2이다. 따라서 n=p1p2p3n3가 성립한다.

위 과정을 반복하면, 유한 번의 과정 후에 nk1은 소수가 되고 이를 pk라 하자. 이로부터 합성수 n은 소수의 곱 n=p1p2p3pk로 표현할 수 있다.

곱하는 순서를 무시했을 때, 표현방법은 유일하다. n을 두 가지 형태의 소수의 곱으로 표현한 것을 n=p1p2p3pr와 n=q1q2q3qs라고 하자. 여기서 소수는 증가하는 형태로 p1p2prq1q2qs이다. p1q1q2qs를 만족하므로,  에 따라 어떤 k에 대해 p1=qk임을 알 수 있다. 이 경우 p1=q1이고, 반대로 q1p2p3pr인 경우 q1p1이 되어 p1=q1이다.

양변을 같은 수 p1으로 나누면 np1=p2p3pr=q2q3qs가 되고 같은 과정을 반복하면 p2=q2가 된다. 유한 번의 과정 후에는 rs와 qr+1qr+2qs가 도출되지만, 소수의 곱은 1보다 크다는 모순이 생긴다. 따라서 r=s가 되어 n=p1p2pr=q1q2qr이고 이것은 곧 두 소수의 곱이 유일한 형태임을 의미한다. Q.E.D.

 

 

소수판별법

만약 n이 합성수라면, n의 소인수 중 하나는 n보다 같거나 작다.

 

만약 n이 합성수라면, 합성수의 정의에 의해 1<a<n인 인수 a가 존재한다. 양의 인수에 대한 정의에 따라 n=ab로 표현할 수 있고 b는 1보다 큰 양수이다. 만약 a>n이고 b>n이라면 ab>n×n=n이 되는데 이는 n=ab와 모순이 된다. 따라서 an이거나 bn이어야 한다. (Q.E.D.)

 

 

📌 예제: 101은 소수인가?

✘ 풀이: 만일 101이 합성수라면, 101의 소인수 중 하나는 101보다 크지 않다. 10110.05. 10.05보다 작은 소수는 2, 3, 5, 7인데, 이들로 101을 나눌 수 있는지 확인해보자:

- 101 ÷ 2 ≠ 정수
- 101 ÷ 3 ≠ 정수
- 101 ÷ 5 ≠ 정수
- 101 ÷ 7 ≠ 정수

따라서 101은 10.05보다 작은 소수로 나눌 수 없으므로 101은 소수이다.

 

 

 

에라토스테네스의 체

 

에라토스테네스의 체는 특정한 정수 n 이하의 소수를 모두 찾기 위한 확실한 접근 방법이다. 이 방법은 n 이하의 소수를 이용하여 n을 차례대로 나누어 나누어지지 않고 남아 있는 수를 구하는 방식이다. 다음은 100 이하의 모든 소수를 찾기 위한 에라토스테네스의 체의 과정이다.

1. 1에서 100까지 모든 수를 나열한다.

2. 2는 소수이므로, 2를 제외한 2의 배수들을 모두 지운다.
   - 지워지는 숫자들: 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, .....

3. 3은 남아 있는 수 중 2보다 큰 첫 번째 소수이므로, 3을 제외한 3의 배수들을 모두 지운다.
   - 지워지는 숫자들: 6, 9, 12, 15, 18, 21, 24, 27, 30, ..... 

4. 5는 남아 있는 수 중 3보다 큰 첫 번째 소수이므로, 5를 제외한 5의 배수들을 모두 지운다.
   - 지워지는 숫자들: 10, 15, 20, 25, 30, .....

5. 7은 남아 있는 수 중 5보다 큰 첫 번째 소수이므로, 7을 제외한 7의 배수들을 모두 지운다.
   - 지워지는 숫자들: 14, 21, 28, .....


6. 계속해서 남아 있는 수 중 가장 작은 소수를 선택하여, 그 소수의 배수들을 모두 지운다. 이 과정을 10010 이하의 소수에 대해 반복한다.

결과적으로, 남아 있는 숫자들은 모두 소수이다.

 

(2) 소수의 무한성 

 

무한히 많은 소수가 존재한다.

 

✘ 증명 

유클리드는 대우를 이용하여 증명한다. 소수가 n개로 유한하고, 모든 소수를 p1,p2,p3,,pn이라고 가정하자. 이제 Q=p1p2pn+1이라고 두면 Q>1인 소수이거나 합성수이다. 만약 Q가 합성수라면 어떤 소수 p로 나눌 수 있다. 여기서 p는 모든 n개의 소수 중 하나이어야 한다. 결국 pp1p2pn이면서 동시에 pQ를 만족해야 하므로 p(Qp1p2pn), 즉 p1이 도출된다. 하지만 1의 인수는 1뿐이고 pn는 1이 아니기에 모순이다. 결국 모든 소수의 리스트 p1,p2,p3,,pn에 없는 소수가 존재한다. 이 소수는 Q 자신이거나 Q의 소인수로 존재한다. 결론적으로 유한한 n개의 소수에 포함되지 않는 소수가 반드시 있어야 하므로 소수는 무한히 많아야 한다. Q.E.D.

 

메르센 소수 

Mersenne Prime

2p1 (단, p는 소수)

  - n이 합성수일 때, 2n1은 소수가 아님.
  
✘ 증명
 
  n=mk라고 두자.
  2n1=2mk1=(2m1)(2m(k1)+2m(k2)++1)
  (2m1)(2n1)

  - 2p1이 모두 소수는 아님. (예: 2111=23×89)

 

 

 

 

소수 정리 

x 이하의 소수의 개수 π(x)와 xlnx의 비율은 x가 무한히 커지면 1로 수렴한다.

limxπ(x)xlnx=1[π(x)xlnx]

- 2부터 x까지 자연수 중에 소수가 될 확률:

π(x)x1lnx

 

 

 

 

4. RSA 암호 

 

 

(1) 페르마의 작은 정리 

 


p가 소수이고 a가 p로 나눌 수 없는 정수이면, 

ap11(modp)

이다. 또한 모든 정수 a에 대하여 

apa(modp)

이다.

 

📌 예제:  7222를 11로 나누었을 때 나머지를 구하시오.

✘ 풀이:

71111(mod11)을 이용하자.
- 모든 정수 k에 대해 (710)k1(mod11)가 성립.

그런데 222 = 22 × 10 + 2 이므로

7222=722×10+2=(710)2272(1)2249(mod11)
5(mod11)

따라서 7222mod11=5.

 

 

 

반응형