맨위로가기

나머지

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

나머지는 정수를 다른 정수로 나눈 후 남은 값을 의미하며, MOD 또는 mod로 표기한다. 정수, 부동 소수점 수, 다항식 등 다양한 수학적 맥락에서 사용되며, 최소 양의 나머지, 최소 절대 나머지 등 여러 종류가 있다. 프로그래밍 언어에 따라 나머지 연산의 결과가 다르게 정의될 수 있으며, 한국 정보통신 분야에서는 해시 함수, 암호학, 데이터 처리, 게임 개발 등 다양한 분야에서 활용된다.

2. 정수에서의 나머지 연산

나머지 연산은 mod 또는 %로 표기하며, 기수법이나 컴퓨터 프로그래밍 언어에서 나머지 연산을 나타내는 기호로 사용된다. ''a'' mod ''b''는 ''a''를 ''b''로 나누었을 때의 나머지를 의미한다. 예를 들어 10 mod 3 = 1, 9 mod 3 = 0, 1 mod 3 = 1이다. 피제수(''a'')가 제수(''b'')보다 작으면 피제수가 나머지가 된다.

유클리드 나눗셈에 따르면, 정수 ''a''와 0이 아닌 정수 ''d''가 주어졌을 때, 이고 를 만족하는 고유한 정수 ''q''와 ''r''이 존재한다. 이때 ''q''는 , ''r''은 나머지라고 한다.

2. 1. 최소 양의 나머지와 최소 절대 나머지

정수 ''a''와 0이 아닌 정수 ''d''가 주어졌을 때, 이고 를 만족하는 고유한 정수 ''q''와 ''r''이 존재한다. 이때 ''q''는 , ''r''은 나머지라고 한다.[2]

이렇게 정의된 나머지를 ''최소 양의 나머지''라고 한다. 정수 ''a''는 ''d''의 배수이거나, 양의 ''q''에 대해 와 사이의 연속적인 ''d''의 배수 간격 안에 있다.

어떤 경우에는 ''a''를 ''d''의 정수 배수에 가능한 가깝게 나눗셈을 수행하는 것이 편리하다. 즉, 어떤 정수 ''k''에 대해 , 로 나타낼 수 있다.

이 경우 ''s''를 ''최소 절대 나머지''라고 한다.[3] 몫과 나머지처럼, ''k''와 ''s''는 이고 인 경우를 제외하고는 고유하게 결정된다. 예외의 경우에는 이 된다.

43을 5로 나눌 때, 43 = 8 × 5 + 3 이므로 3은 최소 양의 나머지이다. 또한 43 = 9 × 5 − 2 이므로 −2는 최소 절대 나머지이다.

''d''가 음수일 때도 정의는 유효하다. 예를 들어 43을 −5로 나눌 때, 43 = (−8) × (−5) + 3 이므로 3은 최소 양의 나머지이고, 43 = (−9) × (−5) + (−2) 이므로 -2는 최소 절대 나머지이다.

42를 5로 나눌 때, 42 = 8 × 5 + 2 이고 2 < 5/2 이므로 2는 최소 양의 나머지이자 최소 절대 나머지이다.

최소 절대 나머지가 음수인 경우, 최소 양의 나머지에서 ''d''를 빼서 얻을 수 있다. 양의 나머지가 ''r''1이고 음의 나머지가 ''r''2이면, 가 성립한다.

2. 2. 예시

43을 5로 나누면 다음과 같다.

: 43 = 8 × 5 + 3

따라서 3은 최소 양의 나머지이다.[2]

또한 다음과 같이 표현할 수도 있다.

: 43 = 9 × 5 - 2

이 경우 -2는 최소 절대 나머지이다.[3]

42를 5로 나누는 경우, 42 = 8 × 5 + 2가 되고, 2 < 5/2 이므로 2는 최소 양의 나머지이자 최소 절대 나머지가 된다.

이러한 정의는 제수(나누는 수)가 음수일 때도 유효하다. 예를 들어 43을 -5로 나누면, 43 = (-8) × (-5) + 3 이므로 3은 최소 양의 나머지가 되고, 43 = (-9) × (-5) + (-2) 이므로 -2는 최소 절대 나머지가 된다.

3. 부동소수점 수에서의 나머지 연산

부동소수점 수인 ''a''와 ''d''가 있고, ''d''가 0이 아닌 경우, ''a''는 나머지 없이 ''d''로 나눌 수 있으며, 몫은 또 다른 부동소수점 수가 된다. 그러나 몫이 정수로 제한되면 나머지의 개념이 여전히 필요하다. 고유한 정수 몫 ''q''와 고유한 부동소수점 나머지 ''r''이 존재하여 ''a'' = ''qd'' + ''r'' (0 ≤ ''r'' < |''d''|)이 성립함을 증명할 수 있다.

위에서 설명한 것처럼 부동소수점 수에 대한 나머지의 정의를 확장하는 것은 수학적으로 이론적으로 중요하지 않지만, 많은 프로그래밍 언어가 이 정의를 구현한다 (나머지 연산 참조).

4. 프로그래밍 언어에서의 나머지 연산

나머지 연산은 프로그래밍 언어에서 `MOD` 또는 `mod` 기호로 표현된다. 예를 들어, `a mod b`는 `a`를 `b`로 나누었을 때의 나머지를 의미한다.

하지만 음수가 포함된 나머지 연산은 프로그래밍 언어마다 다르게 처리된다. 다음은 그 예이다.


  • 파스칼은 'mod' 연산 결과가 항상 양수이다.[4]
  • C99는 나머지가 피제수(나누어지는 수)와 같은 부호를 가진다.[5]
  • Perl, 파이썬은 나머지가 제수(나누는 수)와 같은 부호를 가진다.[6]
  • Scheme, 에이다, PL/I, 포트란, Common Lisp, 하스켈 등은 나머지와 관련된 여러 함수를 제공하여 다양한 규칙을 지원한다.

5. 다항식에서의 나머지 연산

다항식의 유클리드 나눗셈은 정수의 유클리드 나눗셈과 매우 유사하며 다항식의 나머지를 도출한다. (특히 실수 또는 복소수) 위에서 정의된 두 개의 일변수 다항식 ''a''(''x'')와 ''b''(''x'') (여기서 ''b''(''x'')는 0이 아닌 다항식)가 주어졌을 때, 다음을 만족하는 두 개의 다항식 ''q''(''x'') (몫)와 ''r''(''x'') (나머지)가 존재한다.[7]

:''a''(''x'') = ''b''(''x'')''q''(''x'') + ''r''(''x'')

여기서

:deg(''r''(''x'')) < deg(''b''(''x''))

"deg(...)"는 다항식의 차수를 나타낸다. (값이 항상 0인 상수 다항식의 차수는 음수로 정의될 수 있으므로, 이 차수 조건은 이것이 나머지일 때 항상 유효하다). 또한, ''q''(''x'')와 ''r''(''x'')는 이러한 관계에 의해 유일하게 결정된다.

정수의 유클리드 나눗셈에서는 차수 조건 대신 나머지 ''r''에 대한 경계 조건(음이 아닌 수이며 제수보다 작음)을 사용하며, 이는 ''r''의 유일성을 보장한다. 정수와 다항식 나눗셈의 유사성은 유클리드 나눗셈이 유효한 가장 일반적인 대수적 환경을 찾도록 이끌었으며, 이러한 정리가 존재하는 환을 유클리드 정역이라고 부른다. 다만, 유클리드 정역에서는 몫과 나머지의 유일성이 보장되지 않는다.[8]

5. 1. 다항식 나머지 정리

다항식의 유클리드 나눗셈은 정수의 유클리드 나눗셈과 매우 유사하며 다항식의 나머지를 생성한다. (특히 실수 또는 복소수) 위에서 정의된 두 개의 일변수 다항식 ''a''(''x'')와 ''b''(''x'') (여기서 ''b''(''x'')는 0이 아닌 다항식)가 있을 때, 다음을 만족하는 두 개의 다항식 ''q''(''x'') (''몫'')와 ''r''(''x'') (''나머지'')가 존재한다.[7]

:''a''(''x'') = ''b''(''x'')''q''(''x'') + ''r''(''x'')

여기서

:deg(''r''(''x'')) < deg(''b''(''x''))

"deg(...)"는 다항식의 차수를 나타낸다. (값이 항상 0인 상수 다항식의 차수는 음수로 정의될 수 있으므로, 이 차수 조건은 이것이 나머지일 때 항상 유효하다). 또한, ''q''(''x'')와 ''r''(''x'')는 이러한 관계에 의해 유일하게 결정된다.

정수의 유클리드 나눗셈과 다항식의 유클리드 나눗셈 사이의 유사성은 유클리드 나눗셈이 유효한 가장 일반적인 대수적 환경을 찾도록 동기를 부여한다. 이러한 정리가 존재하는 환은 유클리드 정역이라고 불리지만, 이러한 일반성에서는 몫과 나머지의 유일성이 보장되지 않는다.[8]

다항식 나눗셈은 다항식 나머지 정리로 알려진 결과를 생성한다. 즉, 다항식 ''f''(''x'')를 ''x'' − ''k''로 나누면 나머지는 상수 ''r'' = ''f''(''k'')이다.[9][10]

6. 한국 정보통신 분야에서의 활용

나머지 연산은 한국 정보통신 분야에서 다음과 같이 다양하게 활용된다.


  • 해시 함수: 데이터의 무결성을 검증하고, 효율적인 데이터 검색을 위해 사용된다. 예를 들어, 파일의 변경 여부를 확인하거나, 데이터베이스에서 특정 레코드를 빠르게 찾을 때 해시 함수를 이용할 수 있다.
  • 암호학: 공개키 암호, 전자 서명 등에서 중요한 역할을 한다. 예를 들어, RSA 암호화 알고리즘은 나머지 연산을 기반으로 동작한다.
  • 데이터 처리: 순환 버퍼, 주기적인 작업 처리 등에 활용된다. 예를 들어, 순환 버퍼는 데이터를 저장할 때 나머지 연산을 사용하여 버퍼의 인덱스를 계산한다.
  • 게임 개발: 아이템 획득 확률, 몬스터 배치 등 다양한 로직에 적용된다. 예를 들어, 특정 아이템의 획득 확률이 10%일 때, 나머지 연산을 사용하여 10번의 시도 중 1번 아이템을 획득하도록 설정할 수 있다.

7. 관련 도서

해럴드 데이븐포트(Harold Davenport)의 《고등 연산: 수론 입문》(The higher arithmetic: an introduction to the theory of numbers, 케임브리지 대학교 출판부, 1999년, ISBN 0-521-63446-6) 25쪽에서 나머지(remainder)를 설명한다.[1]

빅터 카츠(Victor Katz)가 편집한 《이집트, 메소포타미아, 중국, 인도, 이슬람의 수학: 자료집》(The mathematics of Egypt, Mesopotamia, China, India, and Islam : a sourcebook, 프린스턴 대학교 출판부, 2007년, ISBN 9780691114859)에서 나머지(remainder) 관련 내용을 찾을 수 있다.[2]

스티븐 슈워츠만(Steven Schwartzman)의 《수학 용어: 영어로 사용되는 수학 용어의 어원 사전》(The words of mathematics : an etymological dictionary of mathematical terms used in english, Washington: 미국 수학 협회, 1994, ISBN 9780883855119)에서 나머지(remainder)라는 명사(noun)에 대한 설명을 찾을 수 있다.[3]

마틴 M. 주커만(Martin M. Zuckerman)의 《산수: 직관적인 접근》(Arithmetic: A Straightforward Approach, Rowman & Littlefield 출판사, ISBN 0-912675-07-1)에서 나머지(remainder)에 대한 내용을 찾을 수 있다.[4]

참조

[1] 서적
[2] 서적
[3] 서적
[4] 웹사이트 Pascal ISO 7185:1990 http://pascal-centra[...]
[5] 간행물 C99 specification (ISO/IEC 9899:TC2) http://www.open-std.[...] 2018-08-16
[6] 웹사이트 Built-in Functions — Python 3.10.7 documentation https://docs.python.[...] 2022-09-10
[7] 서적
[8] 서적
[9] 서적
[10] 웹사이트 Polynomial Remainder Theorem https://mathworld.wo[...] 2020-08-27
[11] 서적
[12] 서적
[13] 서적
[14] 웹사이트 Pascal ISO 7185:1990 http://pascal-centra[...]
[15] 웹사이트 C99 specification (ISO/IEC 9899:TC2) http://www.open-std.[...] 2018-08-16
[16] 웹사이트 Built-in Functions — Python 3.10.7 documentation https://docs.python.[...] 2022-09-10
[17] 서적
[18] 서적
[19] 서적
[20] 웹사이트 Polynomial Remainder Theorem https://mathworld.wo[...] 2020-08-27



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com