[include(틀:대수학)] [목차] == 정의 == {{{+1 [[體]] / Field}}} [[대수#s-2.1|대수적 구조]]의 하나로, 간단히 말해 '''[[덧셈]], [[뺄셈]], [[곱셈]], [[나눗셈]]의 사칙연산을 집합 안에서 소화할 수 있는 집합'''을 의미한다. 연산을 통해 나온 값 또한 해당 집합의 원소여야 한다는 뜻.[* 이를 해당 연산에 대해 닫혀있다고 말한다.] 가장 간단한 체의 예시로는 [[유리수]]의 집합 [math( \mathbb Q)], [[실수(수학)|실수]]의 집합 [math(\mathbb R)], [[복소수]]의 집합 [math(\mathbb C )]가 있다. 그래서 이들이 체라는 것을 강조하고 싶을 때에는 각각 유리수체, 실수체, 복소수체라고 부르기도 한다. 그러나 [[정수]]의 집합 [math(\mathbb Z )]는 체가 되지 않는데, 정수 사이의 덧셈, 뺄셈, 곱셈까지는 언제나 원활하게 수행할 수 있지만 아무런 두 정수나 뽑아서 나눗셈을 하였을 때에는 [[나머지|나누어 떨어지지 않는 경우]]도 있기 때문이다. [[자연수]]의 집합 [math(\mathbb N)]의 경우는 나눗셈은커녕 뺄셈조차도 불가능한 경우가 존재하므로 당연히 체가 되지 않는다. 어떤 [[집합]] [math( F )]가 체가 되기 위해서는 다음의 10가지 조건을 만족시켜야 한다.[* 보통 수학과, 수학교육과에서 배우는 전공수학 커리큘럼 중 이 분야를 본격적으로 다루는 현대대수학에서는 [[군(대수학)|군]]을 한학기 가까이 공부하고서 가장 기본적인 덧셈군에다가 이것저것 차근차근 추가하면서 가환군, [[환(대수학)|환]] 등을 거쳐 체의 공리를 마주하기까지의 과정이 최소한 한 학기를 써먹지만, 3학년 과정인 현대대수학보다 이른 2학년때 배우는 해석학개론에서는 이 10가지 체의 공리를 '''첫 학기 첫 수업에서부터 머릿속에 마구 쑤셔넣고''' 완비순서체로서의 실수를 구성하는데에만 집중하기 때문에 미적분학이나 집합론 말고는 별다른 기초도 안 갖춰진 2학년생들에게 상당한 컬처쇼크를 선사한다. 2학년 때에는 그냥 암기, 사실 암기조차도 아니고 '당연한 성질'이라고 무심코 넘기던 것이 이렇게 여러 조건을 강화한 것임을 깨닫고 나면 고학년생들은 한번쯤 이불킥을 한다. ~~그리고 [[벡터 공간]]을 가군의 예시로 만나면 이불킥 한번 더~~ ] * 집합 [math( F )] 위에 덧셈과 곱셈이 정의되어 있다. * (A1) 덧셈에 대해 교환법칙이 성립한다. * (A2) 덧셈에 대해 결합법칙이 성립한다. * (A3) 덧셈의 항등원 [math( 0 )]이 존재한다. * (A4) [math( F )]의 모든 원소 [math( a )]에 대해 역원 [math( -a )]가 존재한다. 따라서 뺄셈도 항상 가능하다.[* A는 덧셈에 대해 교환법칙까지 성립하는 가환군의 조건이다.] * (M1) 곱셈에 대해 교환법칙이 성립한다.[* 이게 성립하지 않는 [[환(대수학)|환]]은 꼬인체(skew field)가 된다. 대표적으로 [[사원수]] 집합 [math(\mathbb H)].] * (M2) 곱셈에 대해 결합법칙이 성립한다. 따라서 곱셈만 있는 식에서도 괄호를 쓰지 않아도 된다. * (M3) 곱셈의 항등원 [math( 1 )]이 존재한다.[* 대수학 교과서나 학자에 따라 환의 정의에 이 조건을 포함시키기도 하고 제외하기도 한다.][* 이게 성립하지 않으면 [[RNG#s-3]]가 된다. 대표적으로 0과 음수를 포함한 [[짝수]]가 있다.] * (M4) [math( F )]의 [math( 0 )]이 아닌 모든 원소 [math( a )]에 대해 역원 [math( a^{-1} )]가 존재한다. 따라서 0 이외의 수로는 항상 나누기를 할 수 있다. 즉 체에서는 [[나머지]]가 존재해서는 안 된다. * (D) 덧셈과 곱셈에 대해 좌우 분배법칙이 모두 성립한다. 대수적인 언어로 압축해서 쓰면, [math(\left(F,+,\cdot\right))]가 단위원(unity, [math( 1 )])을 포함하는 [[환(대수학)#s-3|가환 나눗셈환]](commutative division ring with unity)이라는 뜻이다. 즉, 다음과 같은 한 문장으로 압축할 수 있다. > (Th) 단위원 [math(1_{R})]을 지니는 가환환 [math(R)]에서 임의의 원소 [math(a\left(\neq0_{R}\right)\in R)]에 대하여, [math(ax=1_{R})]을 만족하는 [math(x\in R)]이 존재하는 가환환 [math(R)]은 체이다. 이것이 위의 10가지 조건과 동치임은 조금만 생각해보면 쉽게 보일 수 있다.[* 가환환이므로 교환법칙에 대해서는 설명할 필요가 없으며, 단위원 [math(1_{R})]을 지정하므로 곱셈에 대한 내용은 해결 가능하다. 다만 이 문장만으로는 덧셈에 대한 내용은 조금 끌어내기가 힘든데, [math(a\left(\neq0_{R}\right)\in R)]에서 덧셈에 대한 항등원 [math(0_{R})]을 언급하고 있다는 점을 이용하면 된다.] 역대 수학 천재들의 목록을 나열해 본다면 절대로 빼놓을 수 없는 수학자가 바로 [[에바리스트 갈루아|갈루아]]인데 이분이 바로 이 체에 관한 이론을 연구하여 [[닐스 헨리크 아벨|아벨]]이 기존에 증명하였던 것과는 다른 방식으로 5차 이상의 [[다항식]]에 대해서는 근의 공식이 존재하지 않는다는 것을 증명하였다.[* 이때 근의 공식이란, 덧셈, 뺄셈, 곱셈, 나눗셈, n승근의 조합으로만 구성된 수식을 의미한다. ] 갈루아는 체와 [[군(대수학)|군]] 사이에 존재하는 미묘하고도 심오한 관계를 사용하여 증명을 할 수 있었다. 이에 관한 자세한 설명은 [[갈루아 이론]]을 참조하자. == 예시 == 위에서 이미 언급한 유리수체, 실수체, 복소수체 이외에도 체가 되는 집합을 다양하게 만들어 낼 수 있다. 본 항목에서는 체의 예시 중 중요한 것들 몇 가지에 대해 간단히 설명한다. === 분수체(Field of fractions) === 몫체(Field of quotients)라고도 한다. 간단히 말해, 정수환 [math(\mathbb{Z})]로부터 유리수체 [math(\mathbb{Q})]를 만드는 과정을 일반화한 것이다. 아래 내용을 읽기 전에 먼저 [[수 체계#s-3.3|유리수의 구성 방법]]에 대해 읽고 오기를 권장한다. ||[[환(대수학)#s-2.3.2|정역(integral domain)]] [math(D)]에 대하여 집합 [math(F)]를 [math(F:=(D\times (D\backslash \{0\}))/\sim)]와 같이 정의한다. 여기에서 [[동치관계]] [math(\sim)]는 다음과 같이 정의한다. * [math((a,b)\sim (c,d) \Longleftrightarrow ad=bc.)] 이 관계가 동치관계임을 보이자. 반사성과 대칭성은 거의 명백하므로 추이성만 보이면 된다. 만약 [math((a,b)\sim (c,d))]이고 [math((c,d)\sim (e,f))]라고 하면 [math(ad=bc)]이고 [math(cf=de)]이다. 첫 번째 등식의 양변에 [math(f)]를 곱하면 [math(adf=bcf=bde)], 즉 [math(adf=bde)]가 된다. 여기에서 [math(d\neq 0)]이고 [math(D)]는 정역이므로 소거법칙[* [math(z\neq 0)]이고 [math(xz=yz)]이면 [math(x=y)].]이 성립한다. 따라서 [math(adf=bde)]의 양변에서 [math(d)]를 소거하면 [math(af=be)]를 얻고, 이는 곧 [math((a,b)=(e,f))]를 의미한다. 이것으로 동치관계 [math(\sim)]의 추이성이 증명되었다. 이제 이렇게 정의한 집합 [math(F)] 위에 연산 [math(+)]와 [math(\cdot)]를 아래와 같이 정의하자. 1. [math(\left[(a,b)\right]+\left[(c,d)\right]=\left[(ad+bc,bd)\right])] 1. [math(\left[(a,b)\right]\cdot \left[(c,d)\right]=\left[(ac,bd)\right])] 그러면 두 연산 [math(+)]와 [math(\cdot)]는 [math(F)] 위에서 잘 정의되어 있으며, 연산 [math(+)]가 위의 공리 (A1)~(A4)를, 연산 [math(\cdot)]가 위의 공리 (M1)~(M4)와 (D)를 만족함을 확인할 수 있다. 조금 더 자세하게 말하자면, (A1), (A2), (M1), (M2), (D)는 단순 계산이고, (A3)은 [math(+)]에 대한 항등원을 [math(0_F:=[(0,1)])]로 놓으면 되며, (A4)는 [math(\left[(a,b)\right])]의 [math(+)]에 대한 역원을 [math(-\left[(a,b)\right]:=\left[(-a,b)\right])]로 놓으면 된다. (M3)은 [math(\cdot)]에 대한 항등원을 [math(1_F:=\left[(1,1)\right])]로 놓고, (M4)는 [math(a\neq 0)]에 대하여 [math(\left[(a,b)\right])]의 [math(\cdot)]에 대한 역원을 [math(\left[(a,b)\right]^{-1}:=\left[(b,a)\right])]로 놓으면 된다. 따라서 [math((F,+,\cdot))]는 체라는 결론을 얻는다. 여기에 더해서 [math(D)]가 [math(F)]의 자연스러운 부분환이 됨을 증명할 수 있는데, 이는 자연스러운 매장(imbedding) [math(i:D\to F)]를 [math(i(a)=\left[(a,1)\right])]로 정의하면 된다. || === 체 확장(Field extension) === 대한민국의 중, 고등학교에서 6년 동안 수학 공부를 해온 사람이라면 아마도 [math(a+b\sqrt 2)] (단, [math(a, b)]는 유리수) 꼴의 수라는 표현에 매우 익숙할 것이다. 아마 이러한 표현을 보는 순간, 무리수 상등이라는 단어도 같이 떠오를 것이다. 정의에 따라 이런 꼴의 수만 모아놓아 만든 집합도 체가 된다. 고등학생은 이미 [math( a+b\sqrt 2)] 꼴의 수를 서로 더하고, 빼고, 곱하여도 언제나 다시 똑같은 꼴의 숫자가 되지, 갑자기 [math( a+b\sqrt 3)] 꼴의 수가 튀어나올 수는 없다는 것을 이미 잘 알고 있다. 게다가 나눗셈을 하는 경우에도 아무런 문제가 없는데, 다음과 같이 역수를 취하여도 [math( (a+b\sqrt 2)^{-1}=(a-b\sqrt 2)/(a^2-2b^2) )] 여전히 [math(a+b\sqrt 2)] 꼴의 수가 되기 때문이다. 따라서 이러한 꼴의 수들을 모두 모아 놓은 집합은 체가 된다. 이제 이 집합에 이름을 붙여주고자 한다면 어떻게 하는 것이 좋을까? [math(a+b\sqrt 2)] (단, [math(a,b)]는 유리수) 꼴의 수들의 집합은 간단하게 생각해보면 유리수의 집합 [math(\mathbb Q)]에 새로운 원소 [math(\sqrt 2)]를 추가한 것과 같다. 물론, [math(\sqrt 2)]라는 원소 단 하나만을 추가해주었다면, 그건 체가 될 수 없다. 왜냐하면 체는 덧셈과 곱셈에 대해 닫혀 있어야 하므로, [math(\sqrt 2)]라는 원소를 체에 추가해 주려면, 동시에 [math(b\sqrt 2)] (단, [math(b)]는 유리수) 꼴의 수도 모두 추가해주어야 할 것이고, 따라서 [math(a+b\sqrt 2)] (단, [math(a,b)]는 모두 유리수) 꼴의 수를 모두 추가해야만 한다. 그러므로 우리가 설명하고자 하는 집합은 [math(\mathbb Q)]라는 체가 [math(\sqrt 2)]라는 원소를 포함하도록 확장하려고 할 때 자연스럽게 얻어지는 체라는 것을 알 수 있고, 이를 간단하게 [math(\mathbb Q(\sqrt 2))]라고 표기할 수 있다. 이와 같이 새롭게 얻어진 체 [math(\mathbb Q(\sqrt 2))]를 [math(\mathbb Q)]의 '''체 확장'''이라고 부른다. 이것을 알고 나면, 비슷하게 [math(\mathbb Q(\sqrt 3))]이라는 체도 쉽게 생각할 수 있을 것이다. 더 나아가서, 원소를 여러 개 덧붙여 [math(\mathbb Q(\sqrt 2,\sqrt 3))]이라는 체도 생각해볼 수 있다. 이는 [math(a+b\sqrt 2+c\sqrt 3+d\sqrt 6)] (단, [math(a,b,c,d)]는 모두 유리수) 꼴의 수들을 모두 모은 집합이 된다. 물론, [math(\mathbb R(i))]는 [math(\mathbb C)]와 같다는 것도 어렵지 않게 이해할 수 있다. === 분해체(Splitting field) === 이제 조금 다른 방향에서 [math(\mathbb Q(\sqrt 2))]를 생각하자. 이때의 키워드는 바로 [[다항식]]의 [[인수분해]]이다. [math(x^2-2)]라는 다항식을 생각해보자. 이 다항식의 해는 유리수가 아니므로, 이 다항식을 '''유리계수 일차다항식''' 두 개의 곱으로 인수분해하는 것은 절대로 불가능할 것이다. 이처럼 어떤 체에서 더 이상 인수분해할 수 없는 다항식이 있는 경우라면, 언제나 그 체를 확장하여 그 다항식의 해를 가지는 새로운 체를 만들어 낼 수 있다! 그런 체를 만드는 방법은 무엇일까? 바로 다항식의 나머지를 취하는 것이다. 우선, 모든 유리계수 다항식을 모아놓은 집합은 [math(\mathbb Q[x])]라고 표기한다. 그리고 인수분해하고자 하는 다항식은 바로 [math(x^2-2)]이다. 이제 우리는 [math(\mathbb Q[x])]의 원소들 중, [math(x^2-2)]로 나눈 '''나머지가 같은 원소들은 그냥 서로 동일한 것'''이라고 생각한다. 예를 들어, [math(x^2+x+1)]을 [math(x^2-2)]로 나눈 나머지는 [math(x+3)]이므로, [math(x^2+x+1\equiv x+3)]으로 취급한다. 그렇게 하고 나면, 어떤 다항식이든 2차다항식으로 나눈 나머지는 1차 이하의 다항식이므로, [math(\mathbb Q[x])]의 모든 원소를 어떤 1차 이하의 다항식 [math(a+bx)] (단, [math(a,b)]는 유리수)과 동일한 것이라고 생각할 수 있다. 이 다항식 사이의 덧셈, 뺄셈은 그냥 평범한 다항식의 덧셈, 뺄셈을 사용한다. 두 다항식 사이의 곱을 하고 나면 2차 다항식이 만들어질 수도 있는데, 그 경우에는 다시 [math(x^2-2)]로 나눈 나머지를 취한다. 즉, [math(x \times x)]는 [math(x^2-2)]로 나눈 나머지가 2이므로 [math(x)]라는 다항식을 제곱하면 그것은 2가 된다. 마지막으로 나눗셈을 하는 방법을 알아야 하는데, 이것은 조금 복잡하다. 그렇지만 [math(x^2-2)]라는 다항식이 [math(\mathbb Q)]에서는 인수분해가 불가능하였다는 사실을 잘 사용하면 어떤 다항식의 역수에 해당하는 다항식을 찾아내는 것도 가능하다. 예를 들어, [math(1/x\equiv x/2)]이다. 이 식을 잘 정리하면 [math(x^2-2\equiv 0)]를 얻을 수 있고, 양변은 [math(x^2-2)]로 나눈 나머지가 동일하므로 맞는 식이라는 것을 확인할 수 있다. 따라서, 이렇게 [math(\mathbb Q[x])]에서 [math(x^2-2)]으로 나눈 나머지가 같은 다항식은 같다고 선언한 집합(기호로는 [math(\mathbb Q[x]/(x^2-2))]라고 쓴다.)은 사칙연산이 잘 정의되므로, 체가 된다. 길게 설명했지만 사실 이 체는 위에서 설명한 [math(\mathbb Q(\sqrt 2))]와 동일한 것이다. 왜냐하면 [math(x^2-2)]로 나눈 나머지 다항식들의 곱셈과 나눗셈에서 [math(x)]라는 기호는 마치 [math(\sqrt 2)]처럼 작용하기 때문이다. 우리는 이미 위에서 [math(x\times x\equiv 2)]라든지 [math(1/x\equiv x/2)]라든지 하는 식으로부터 [math(x)]라는 '''기호'''가 실은 [math(\sqrt 2)]처럼 작동하는 것을 이미 확인하였다. 정리하자면, 우리는 [math(\sqrt 2)]라는 수의 존재를 전혀 알지 못하고도, [math(x^2-2)]라는 다항식이 해를 가지는 [math(\mathbb Q)]의 체 확장을 이야기함으로써, [math(\mathbb Q(\sqrt 2))]를 만들어낼 수 있다. 이렇게 새로운 체에서는 [math(x^2-2)]를 분해할 수 있으므로, [math(\mathbb Q[x]/(x^2-2))]를 [math(x^2-2)]의 '''분해체'''라고 부른다. 어떤 다항식이 그 체에서 인수분해되지 않는다는 것만 확인한다면 동일한 일을 반복할 수 있다. 예를 들어, [math(x^2+x+1)]라는 다항식이 해를 가지는 [math(\mathbb Q)]의 체 확장을 만들고 싶다면, 유리 계수 다항식을 모두 모아놓고, [math(x^2+x+1)]로 나눈 나머지가 같은 다항식은 서로 동일하다고 선언만 하면 된다. 그렇게 얻어지는 체는 물론 [math(x^2+x+1)]의 해인 ~~정석에서 많이 본~~ [math(\omega=(-1+\sqrt 3 i)/2)]를 지니고 있을 것이므로 [math(\mathbb Q(\omega))]와 동일한 체가 될 것이다. 그렇지만 이 체를 구성하기 위해 우리는 [math(\omega)]에 대해 알 필요도 없다. 2차 다항식의 경우에는 한 번의 체 확장으로 분해체를 얻을 수 있지만, 고차 다항식이 주어진 경우에는 이러한 체 확장을 여러 번 해야 할 수도 있다. 그렇지만 매번 해를 1개씩만 구하여도 최대 n번만 이 과정을 반복함으로써 어떤 다항식이든 일차다항식의 곱으로 인수분해하는 새로운 체를 구성할 수 있다.[* 이는 [[대수학의 기본정리]]의 자명한 귀결로 얻어지는 결과다. 항목의 따름정리 1 참조.] 그렇게 얻어지는 체를 그 다항식의 분해체라고 한다. 또한 이런 식으로 계속해서 체를 확장해갈 경우, '''유리수체 [math(\mathbb{Q}[x])]의''' 모든 다항식의 근을 포함하는 체를 생각할 수 있는데, 이 체는 [math(\mathbb{Q_A})]라고 표기하고 '''유리수체의 대수적 폐포'''(Algebraic Closure)라고 부르며, [math(\mathbb{Q}\subsetneq\mathbb{Q_A}\subsetneq\mathbb{C})]가 된다. === 유한체(Finite field) === 지금까지 설명한 체의 예시는 모두 무한집합이었다. 왜냐하면 지금까지 말한 체는 모두 유리수의 집합 [math(\mathbb Q)]를 부분집합으로 갖는데, [math(\mathbb Q)]가 무한집합이기 때문이다. 그렇지만 [math(\mathbb Q)]와는 별개의 근원으로부터 출발한다면 유한집합이 되는 체도 만들 수 있다. 그 별개의 근원이란 다름 아닌 정수의 집합 [math(\mathbb Z)]이다. [math(\mathbb Z)] 자체는 나눗셈이 항상 잘 떨어지지 않으므로, 그 자신이 체가 될 수 없다는 것을 이미 알고 있다. 따라서 [math(\mathbb Z)]를 이용하여 새로운 체를 만들어 낸다는 발상은 꽤 놀라운 것이라고 할 수 있다. [math(\mathbb Z)]로부터 체를 만들어내는 방법은 바로 [[소수(수론)|소수]] [math(p)]로 나눈 나머지를 관찰하는 것이다. 여기에서는 예시를 들기 위해 [math(p=7)]인 경우만을 생각해보자. 이제 정수의 집합 [math(\mathbb Z)]의 원소를 모두 모아놓고, [[시계 산술|이들 중 7로 나눈 나머지가 같은 것은 '''그냥 같은 것으로(equivalent한 것으로) 취급한다!''']] 예컨대, 15를 7로 나눈 나머지와 8을 7로 나눈 나머지는 모두 1이므로, 그냥 15와 8은 '''같은 수'''라고 생각하는 것이다. 그리고 이를 표기하기 위해서는 [math(15\equiv 8\text{ (mod }7))]이라고 쓴다. 한편, 5와 9는 7로 나눈 나머지가 다르므로 [math(5 \not\equiv 9\text{ (mod }7))]이라고 쓸 수 있다. 이렇게 하고 나면, 정수를 7로 나눈 나머지는 0~6의 7가지만 가능하므로, 원래의 [math(\mathbb Z)]는 무한집합이었지만, 이제는 [math(\{0,1,2,3,4,5,6\})]이라는 유한집합이 되어버렸고, 이를 [math(\mathbb Z_7)]이라고 표기한다. (물론, [math(p)]가 다른 소수인 경우에도 [math(\mathbb Z_p)]라고 표기한다.) 이제 [math(\mathbb Z_7)]이 체가 된다는 것을 확인하자. 앞서 말했듯이 어떤 집합이 체가 되는지를 확인하려면 덧셈, 뺄셈, 곱셉, 나눗셈이 잘 이루어지는가를 확인하면 된다. [math(\mathbb Z_7)]의 덧셈은 [math(\mathbb Z)]에서 원래 쓰던 것을 그냥 가져올 것이다. 예를 들어, [math(15+8\equiv 23\text{ (mod }7))]과 같이 덧셈을 할 때에는 평범한 정수를 더하듯이 더해주면 된다. 뺄셈과 곱셈의 경우도 마찬가지로 원래 정수 [math(\mathbb Z)]에서 하던 뺄셈과 곱셈을 [math(\mathbb Z_7)]에 이식하는 것이 가능하다.[* 사실 이러한 이식 과정에서 연산 사이에 호환이 잘 이루어지는지를 추가적으로 확인해보아야 한다. 이는 두 정수 a, b가 주어졌을 때, a와 b를 각각 7로 나눈 나머지를 더한 후 7로 나눈 나머지를 취한 것과, a+b를 7로 나눈 나머지를 취한 것이 동일하다는 사실에 기인하고 있다. 곱셈도 마찬가지이다.] 이렇게 해서 [math(\mathbb Z_7)] 위의 덧셈, 뺄셈, 곱셈은 어렵지 않게 할 수 있다는 것을 확인하였다. 이제 마지막으로 남은 것은 이 위에서 나눗셈을 잘 할 수 있는지를 확인하는 것이다. 그런데 이것은 전혀 쉬운 일이 아니다. 왜냐하면 [math(\mathbb Z_7)]의 근원이 되는 [math(\mathbb Z)] 자체에, 덧셈, 뺄셈, 곱셈만 있었지, 나눗셈은 없었기 때문이다. 나눗셈을 하는 방법은 우리가 새롭게 정의해주어야 하는데, 이때 사용되는 것이 '''확장된 [[유클리드 호제법]]'''(Extended Euclidean algorithm)이다. 확장된 유클리드 호제법이란, 두 정수 [math(a,b)]가 주어졌을 때, 두 수의 최대공약수가 [math(g)]라고 하면, [math(am+bn=g)]가 되는 정수 [math(m,n)]을 언제나 '''빠르게''' 찾아낼 수 있는 알고리즘이다. (사실 저러한 정수 [math(m,n)]이 항상 존재한다는 사실부터가 [[충격과 공포]]다.) 그러면 이제 [math(\mathbb Z_7)] 위에서 나눗셈을 할 수 있다. 나눗셈은 역원을 곱하는 것이므로, 0 이외의 수가 항상 역수를 가진다는 것을 보이면 그것이 곧 나눗셈을 할 수 있다는 것을 보이는 것과 같다. 0이 아닌 원소 1, 2, 3, 4, 5, 6에 대해서 각각 역원을 찾으려면 어떻게 해야할까? 1~6은 모두 7보다 작은 자연수이고, 7은 소수이므로, 1~6은 모두 7과 서로소이다. 즉, 최대공약수가 1이다. 따라서 이 중 3의 역원을 계산하고자 한다면, 3과 7을 확장된 유클리드 알고리즘의 입력으로 넣어준다. 3과 7의 최대공약수는 1이므로, 알고리즘은 [math(3m+7n=1)]이 되는 정수 [math(m,n)]을 반환해준다. 그러면 이때의 [math(m)]이 바로 3의 역수, 즉 [[잉여역수]]가 된다. 왜냐하면 [math(3m\equiv 3m+0n\equiv 3m+7n\equiv 1\text{ (mod }7))]이기 때문이다. 실제로 계산을 해보면 [math(3\times 5\equiv 15\equiv 1\text{ (mod }7))]이므로 3의 잉여역수는 5가 되는 것을 알 수 있다. 따라서 [math(\mathbb Z_7)]는 체가 된다. 그리고 이는 위에서 예시로 보여주었던 체들과는 달리 유한집합이다. 이와 같이 유한집합이 되는 체를 유한체 또는 갈루아 체라고 부른다. 유한체는 이미 수학자들에 의해 완벽한 분류(classification)[* classification 문제는 수학의 곳곳에서 발견되는 아주 중요한 문제이다.]가 이루어져 있다. 보다 자세히 말하자면, 유한체의 원소의 개수는 모두 [math(p^n)] (단, [math(p)]는 소수)의 꼴로 표현되고, 원소 수가 [math(p^n)]개인 체는 오직 하나가 존재한다는 사실이 증명되어 있다.[* 존재성 증명: [math(\mathbb Z_p)]위의 다항식 [math(x^{p^n}-x=0)]과 이것의 해의 모임 [math(F)]를 생각하자. [math(\text{char}\left(\mathbb Z_p\right)=p)]이므로, [[1학년의 꿈|임의의 [math(\alpha,\beta \in F)]에 대하여 [math(\left(\alpha+\beta\right)^{p^{n}}=\alpha+\beta)]]]이다. 나머지 체의 공리들은 쉽게 보일 수 있다. 따라서, [math(F)]는 [math(\mathbb{Z}_p)]위의 다항식 [math(x^{p^{n}}-x=0)]의 분해체이다.][* 유일성 증명: [math(\left|F\right|=p^{n})]인 체 [math(F)]에 대해, [math(F^{\times})]는 곱셈군이므로, 모든 [math( \alpha\in F^{\times})]에 대해 [math(\alpha^{p^{n}-1}=\alpha^{\left|F^{\times}\right|}=1)]이다. 따라서, 모든 [math( \alpha\in F)]에 대해, [math(\alpha^{p^{n}}-\alpha=0)]이다. 즉, [math(F)]의 모든 원소는, [math(\mathbb{Z}_p)]위의 다항식 [math(x^{p^{n}}-x=0)]의 근이고, 이 방정식의 차수는 [math(p^{n}=\left|F\right|)]이므로, [math(F)]는 [math(\mathbb{Z}_p)]위의 다항식 [math(x^{p^{n}}-x=0)]의 분해체이다. 분해체의 유일성에 의해, [math(F)]는 유일하다.] 즉, 원소 수가 7개인 체는 위에서 밝혀낸 [math(\mathbb Z_7)] 하나뿐인 것이다. 위에서 설명한 방법을 사용하면 원소의 개수가 [math(p)]인 체는 모두 만들어낼 수 있는데, 어떻게 하면 [math(p^n)]개의 원소를 가지는 체를 만들어낼 수 있을까? 이는 조금 더 복잡하지만 정수를 소수로 나눈 나머지를 생각하는 대신, [math(\mathbb Z_p)]의 원소를 계수로 가지는 다항식을 [math(n)]차 기약다항식으로 나누는 방법을 사용하여 만들 수 있다. 유한체의 분류 문제가 완벽하게 해결되었다고 해서, 유한체는 비교적 단순한 대상이라는 '''오해'''가 있을 수도 있다. 전혀 그렇지 않다. 예를 들어, 유한체 위에서 곱셈이 잘 정의되기 때문에, 실수에서의 로그와 비슷한 것을 생각하여 [math(\mathbb Z_p)] 위에서의 로그를 생각해볼 수 있다. 예를 들어, [math(\mathbb Z_7)] 위에서 생각한다면 [math(\log_3 6\equiv 3)]이다. 이는 [math(3^3\equiv 27\equiv 6\text{ (mod }7))]이기 때문이다. 그렇지만 이렇게 로그를 계산하는 것은 소수 [math(p)]가 50자리 이상의 큰 수가 되고 나면 더이상 쉬운 문제가 아니다. 이와 같은 것을 이산 로그 문제(DLP)라고 하는데, 양자컴퓨터를 사용하지 않고서는 빠르게 계산하는 방법이 전혀 밝혀지지 않았기 때문에, 심지어는 이를 응용하여 암호 시스템을 만들 수 있을 정도이다! [[https://crypto.stackexchange.com/questions/9385/reduction-of-integer-factorization-to-discrete-logarithm-problem|이산 로그 문제와 소인수분해 문제가 동등함을 쉽게 밝힐 수 있고]], 이산 로그 문제의 다항 시간 해법을 알면 다항 시간 내에 끝나는 간편한 소인수분해 알고리즘을 만들 수 있다. 복잡한 정수론적 문제란 곧 새로운 암호 시스템 하나를 의미한다. 잘 알려져 있듯이, 소인수분해의 어려움은 널리 쓰이는 [[RSA]] 암호 시스템의 기초가 된다. 그러나 RSA는 양자컴퓨터가 개발되면 공격할 수 있기 때문에, 요즘 수학자들은 양자컴퓨터로도 풀기 어려운 [[격자점|격자(lattice)]] 문제에 기반하는 다른 암호 시스템의 안전성을 연구하고 있다. == 여담 == 여담으로 주의할 점이 있다면, 대수적으로 닫힌 확대체. 즉 대수적 확대체의 존재성에 대한 증명의 경우는 '''[[선택공리]]''' 없이는 증명할 수 없다. 정확하게는 모든 체에 대하여 대수적으로 닫힌 체가 존재함을 보이기 위해서는 '부분순서집합의 임의의 사슬이 상계를 가지면 극대원소가 적어도 하나 존재한다'라는 초른의 보조정리를 이용해야 하는데, 이는 선택공리와 동치이기 때문. [[분류:대수학]]