문제 해결의 기술 The Art of Problem Solving
제5장 정수의 세계
Chapter 05 · Using the Integers

정수의 세계

정수는 단순해 보이지만, 그 안에는 약수·진법·나머지·소수라는 깊은 구조가 숨어 있다. 정수론은 그 구조를 캐내는 기술이다.

정수론 (Number Theory) 배수와 약수 진법 모듈러 산술 소수

5.1배수와 약수

정수 b가 정수 a를 나머지 없이 나누면, ba약수(divisor)이고 ab배수(multiple)다. 기호로 b | a("b가 a를 나눈다").

큰 수가 어떤 작은 수의 배수인지는 배수 판정법으로 빠르게 알 수 있다. 이 판정법들은 마법이 아니라 진법(자릿값) 구조에서 자연스럽게 나온다.

주요 배수 판정법
나누는 수판정 방법
2끝자리가 짝수1374 → 4는 짝수 ✓
3각 자리 숫자의 합이 3의 배수1374 → 1+3+7+4=15 ✓
4끝 두 자리가 4의 배수1372 → 72=4·18 ✓
5끝자리가 0 또는 51375 → 5 ✓
9각 자리 숫자의 합이 9의 배수1377 → 1+3+7+7=18 ✓
11홀수 자리 합 − 짝수 자리 합이 11의 배수1364 → (4+3)−(6+1)=0 ✓
직관 — 3·9 판정법이 통하는 이유 10 = 9 + 1, 100 = 99 + 1, 1000 = 999 + 1 … 모든 자릿값은 "9의 배수 + 1"이다. 그래서 어떤 수를 9로 나눈 나머지는 각 자리 숫자의 합을 9로 나눈 나머지와 같다. 3도 마찬가지.

5.2진법 — 자릿값의 정체

우리가 쓰는 십진법에서 2372·10² + 3·10¹ + 7·10⁰을 뜻한다. 여기서 10을 밑(base)이라 한다. 밑은 10일 필요가 없다 — 컴퓨터는 2를 밑으로 쓴다(이진법).

밑이 b인 진법에서 각 자리는 b⁰, b¹, b², …의 자릿값을 갖고, 각 자리 숫자는 0부터 b−1까지다.

b진법 전개 — Base-b Expansion
(dₙ … d₂ d₁ d₀)_b = dₙ·bⁿ + … + d₂·b² + d₁·b + d₀
각 자리 숫자 dᵢ 는 0 이상 b−1 이하. 십진법은 b = 10 인 특수한 경우일 뿐이다.
예제 5-1 진법 변환

문제. 십진수 45를 이진법으로 나타내라.

풀이. 2로 계속 나누며 나머지를 기록한다. 45 ÷ 2 = 22…나머지 1, 22 ÷ 2 = 11…0, 11 ÷ 2 = 5…1, 5 ÷ 2 = 2…1, 2 ÷ 2 = 1…0, 1 ÷ 2 = 0…1. 나머지를 아래에서 위로 읽으면 101101. 검산: 32 + 8 + 4 + 1 = 45 ✓. ∎

모션 · 십진수 45 → 이진법으로 변환 01 / 7
→ ← 스페이스 R

5.3끝자리와 모듈러 산술

모듈러 산술(modular arithmetic)은 "나머지만 가지고 하는 계산"이다. 시계가 12를 넘으면 1로 돌아오듯, 일정한 수를 넘으면 처음으로 순환한다.

abm으로 나눈 나머지가 같으면 "a ≡ b (mod m)"라 쓴다. 놀라운 사실은 — 덧셈·뺄셈·곱셈이 나머지끼리 그대로 통한다는 것이다. 거듭제곱의 끝자리, 요일 계산, 거대한 수의 나머지가 모두 여기서 풀린다.

합동의 성질 — Properties of Congruence
a ≡ b ,   c ≡ d  (mod m)  ⟹
a + c ≡ b + d ,    a · c ≡ b · d  (mod m)
모든 계산을 처음부터 나머지로 바꿔 해도 된다. 큰 수를 직접 다룰 필요가 없다 — 이것이 모듈러 산술의 힘이다.
예제 5-2 거듭제곱의 끝자리

문제. 7¹⁰⁰의 일의 자리 숫자를 구하라.

풀이. 일의 자리는 곧 "mod 10에서의 값"이다. 7의 거듭제곱의 끝자리를 보자: 7¹→7, 7²→9, 7³→3, 7⁴→1, 그다음 7⁵→7주기 4로 순환한다(7, 9, 3, 1). 지수 100을 4로 나눈 나머지는 0 — 즉 주기의 마지막 자리에 해당한다. 따라서 끝자리는 1. ∎

기억할 기법 — 순환 주기를 찾아라 거듭제곱의 끝자리는 항상 어떤 주기로 순환한다. 처음 몇 개를 직접 계산해 주기를 찾고, 지수를 주기로 나눈 나머지만 보면 된다. 100항을 계산할 필요가 없다.

5.4소수와 소인수분해

소수(prime)는 1과 자기 자신 외에 약수가 없는, 1보다 큰 정수다. 2, 3, 5, 7, 11, 13, … 소수가 아닌 1보다 큰 정수는 합성수(composite)다. (1은 소수도 합성수도 아니다.)

소수가 중요한 이유는 산술의 기본정리(Fundamental Theorem of Arithmetic)에 있다 — 1보다 큰 모든 정수는 소수들의 곱으로, 순서를 무시하면 오직 한 가지 방법으로 분해된다. 소수는 정수를 짓는 벽돌이다.

소인수분해 — Prime Factorization
n = p₁^(a₁) · p₂^(a₂) · … · pₖ^(aₖ)
약수의 개수 = (a₁+1)(a₂+1)…(aₖ+1)
pᵢ 는 서로 다른 소수, aᵢ 는 양의 정수. 약수 개수 공식은 "각 소수를 0~aᵢ번 쓸 수 있다"는 곱의 법칙에서 나온다.
예제 5-3 약수의 개수

문제. 72의 양의 약수는 모두 몇 개인가?

풀이. 먼저 소인수분해한다: 72 = 8 × 9 = 2³ × 3². 약수 하나를 만들려면 2를 0~3번(4가지), 3을 0~2번(3가지) 골라 곱하면 된다. 곱의 법칙으로 약수의 개수는 (3+1)(2+1) = 4 × 3 = 12개. 약수를 일일이 적지 않고도 셀 수 있다. ∎

직관 — 약수 = 소인수의 부분 선택 72 = 2³·3²의 모든 약수는 2ᵃ·3ᵇ 꼴이며 0≤a≤3, 0≤b≤2이다. 약수를 센다는 것은 곧 (a, b) 쌍을 센다는 것 — 조합론(제12장)과 정수론이 만나는 지점이다.

5.5최대공약수와 최소공배수

두 수의 최대공약수(GCD)는 둘 다 나누는 가장 큰 수, 최소공배수(LCM)는 둘의 공통 배수 중 가장 작은 수다. 소인수분해를 알면 둘 다 즉시 구한다 — GCD는 공통 소인수의 작은 지수, LCM은 모든 소인수의 지수를 취한다.

GCD와 LCM의 관계 — A Beautiful Identity
gcd(a, b) × lcm(a, b) = a × b
두 수의 곱은 GCD와 LCM의 곱과 항상 같다. 셋 중 셋을 알면 나머지 하나가 공짜로 나온다.
예제 5-4 GCD와 LCM 계산

문제. 4860의 최대공약수와 최소공배수를 구하라.

풀이. 소인수분해: 48 = 2⁴·3, 60 = 2²·3·5. GCD는 공통 소인수를 작은 지수로: 2² · 3 = 12. LCM은 등장하는 모든 소인수를 큰 지수로: 2⁴ · 3 · 5 = 240. 검산: 12 × 240 = 2880 = 48 × 60 ✓. ∎

5.6예제 모음 — 경시 문제 맛보기

도전 5-A 나머지 추론

문제. 어떤 수를 5로 나누면 3이 남고, 7로 나누면 4가 남는다. 이런 수 중 가장 작은 양의 정수는?

풀이. 5로 나눠 3 남는 수: 3, 8, 13, 18, 23, 28, …. 이 중 7로 나눠 4 남는 것을 찾는다. 3→3, 8→1, 13→6, 18→4 ✓. 답은 18. 검산: 18 = 5·3+3 = 7·2+4. (다음 해는 35씩 커진다 — 35는 lcm(5,7)이다.) ∎

도전 5-B 완전제곱이 되는 조건

문제. 2³ · 3⁵ · 5² · n이 완전제곱수가 되게 하는 가장 작은 양의 정수 n은?

풀이. 완전제곱수는 모든 소인수의 지수가 짝수다. 현재 지수는 2의 3(홀수), 3의 5(홀수), 5의 2(짝수). 홀수 지수를 짝수로 만들려면 2와 3을 각각 한 번씩 더 곱해야 한다. 따라서 n = 2 · 3 = 6. 그러면 2⁴·3⁶·5²로 모든 지수가 짝수. ∎

모션 · 거듭제곱 끝자리의 순환 주기 01 / 5
→ ← 스페이스 R
이 장의 핵심 정수의 비밀은 소인수분해에 있다. 약수의 개수, GCD, LCM, 완전제곱 조건 — 모두 소인수의 지수를 다루는 문제로 환원된다. 모듈러 산술은 거대한 수를 "나머지"로 줄여 다루게 해주며, 배수 판정법은 진법 구조의 자연스러운 결과다.