산술의 기본정리 증명
정리 1
자연수 은 유일한 소인수분해 를 가진다. 이때 소수 의 순서는 무시한다.
설명
초등학교부터 자연스럽게 써오던 성질이니만큼 증명이 필요하다는 사실이 낯설겠지만 굉장히 중요하다. 어쩌면 이렇게나 쉽다는 것 자체가 기본정리라는 이름을 달만한 자격이 있다는 증거가 될 것이다.
증명
초등적 증명
Part 1. 존재성
이고 , 그리고 으로 유일한 소인수분해가 존재한다. 이런 식으로 가능한 모든 에 대해서 소인수분해를 찾아보고, 그 마지막 수가 이라고 해보자. 여기서 은 소수거나 합성수이므로 두가지 경우를 체크해보도록 하자.
- Case 1. 가 소수
가 소수라는 것은 그 스스로가 하나의 소수로써 소인수분해가 된다는 것이다. - Case 2. 가 합성수
가 합성수라면 두 자연수의 곱 으로 나타낼 수 있다.
우리는 까지의 모든 자연수에 대해서는 소인수분해를 찾을 수 있었으므로, 를 알고 있다. 이를 그냥 곱해주면 이므로, 의 소인수분해를 구할 수 있다. 두 가지 모든 케이스에 대해서 의 소인수분해를 찾을 수 있으므로, 보다 큰 모든 자연수는 소인수분해를 갖는다.
Part 2. 유일성
이제 이 유일함을 보이면 된다.
의 소인수분해가 유일하지 않아서 이 성립한다고 가정하자.이들의 순서는 유일성에 영향을 미치지 않으므로 편의상 이라고 하자.
어떤 수를 나누는 소수는 그 약수 중 적어도 하나를 나누어야하므로, 은 중 하나를 나눠야한다. 순서는 자유로우므로 으로 나눠지는 를 로 두고 를 로 잡는 식으로 바꿔도 상관 없다.
그런데 역시 과 마찬가지로 소수이므로, 이 성립하고 의 양변에서 그 둘을 소거시키면 을 얻는다. 같은 방법으로 둘 중 한 쪽이 이 될 때까지 소거를 반복할 수 있다. 이 때 다른 쪽 한 변이 이 아닌 경우, 소수들의 곱은 반드시 보다 크므로 등식이 성립하지 않는다. 따라서 가 성립하고 마지막으로 이 성립해야한다.
■
대수적 증명
산술의 기본정리의 대수적 증명: 정수환 는 PID이므로 UFD다.
■
코드
아래는 소인수분해를 R 로 구현한 코드다. 소수 목록을 가져다 놓고 계산하기 때문에 소수인지 판별하는 과정이 없어 빠르다. 당연히 알고리즘으로썬 아무런 가치도 없다. 소인수분해를 쭉 나열하는 형태로 반환하기 때문에 가독성이 떨어질 수 있다. 지수꼴로 바꿔보고 싶다면 그냥 반환된 벡터에 내장함수인 table()
함수를 사용하면 된다.
prime = read.table("../attachment
/cfile8.uf@25411C3C5968BBE322F0D4.txt"); prime = prime[,1]
factorize<-function(p)
{
q=p
factors<-numeric(0)
i=1; j=1
while(q!=1)
{
if(q%%prime[i]) {i=i+1}
else
{
q<-q/prime[i]
factors[j]<-prime[i]
i=1
j=j+1
}
}
return(factors)
}
factorize(54)
factorize(101)
factorize(256)
factorize(420)
table(factorize(420))
다음은 코드를 실행한 결과다.
Silverman. (2012). A Friendly Introduction to Number Theory (4th Edition): p49. ↩︎