서로 모두 같지는 않은 숫자로 이루어진 네 자리 십진수를 고릅니다. 네 자릿수를 큰 순서와 작은 순서로 각각 배열한 뒤 큰 수에서 작은 수를 빼고, 결과에 같은 과정을 반복합니다. 앞의 0도 한 자리로 유지하면 어떤 허용된 시작값에서도 최대 7번 안에 6174에 도달합니다. 6174에서는 7641-1467=6174가 되어 더 이상 바뀌지 않습니다. 이 수를 카프리카 상수(Kaprekar constant)라고 합니다.
카프리카 루틴의 네 단계
- 네 자리 숫자를 준비합니다. 네 숫자가 전부 같으면 제외합니다.
- 자릿수를 내림차순으로 배열해 큰 수 D를 만듭니다.
- 같은 자릿수를 오름차순으로 배열해 작은 수 A를 만듭니다. 앞의 0도 기록합니다.
- D-A를 계산하고 결과를 네 자리로 맞춘 뒤 반복합니다.
예를 들어 3524를 시작값으로 잡으면 5432-2345=3087입니다. 이어 8730-0378=8352, 8532-2358=6174가 됩니다. 3번 만에 고정점에 도달했습니다. 0378에서 앞의 0을 버리고 378이라고 쓰더라도 계산값은 같지만 다음 정렬에서 네 자리 문자열로 다뤄야 규칙이 일관됩니다.
| 반복 | 현재 값 | 내림차순 D | 오름차순 A | D-A |
|---|---|---|---|---|
| 1 | 3524 | 5432 | 2345 | 3087 |
| 2 | 3087 | 8730 | 0378 | 8352 |
| 3 | 8352 | 8532 | 2358 | 6174 |
| 4 | 6174 | 7641 | 1467 | 6174 |
1000처럼 0이 많은 수도 포함됩니다
시작값 1000은 네 자리가 모두 같지 않으므로 허용됩니다. 1000-0001=0999, 9990-0999=8991, 9981-1899=8082, 8820-0288=8532, 8532-2358=6174입니다. 중간 결과 999를 0999로 유지하는 것이 중요합니다. ‘네 자리 수’는 계산 과정에서 선행 0을 포함한 네 자리 문자열을 뜻합니다.
1111·2222처럼 모든 자리가 같으면 왜 제외하나
네 자리가 모두 같은 수는 내림차순과 오름차순이 같습니다. 1111-1111=0000이고, 0000은 계속 0000에 머뭅니다. 6174로 가지 않는 별도의 고정점이므로 조건에서 제외합니다. ‘아무 네 자리 수나 6174로 간다’는 설명은 이 예외를 빠뜨린 것입니다.
6174가 고정점인 계산
7641 - 1467 = 6174
6174의 자릿수를 다시 정렬해도 같은 두 수 7641과 1467이 만들어지므로 반복 결과가 자기 자신입니다. 함수 K(n)을 자릿수 내림차순 수와 오름차순 수의 차라고 하면 K(6174)=6174입니다. 동역학 용어로 6174는 고정점입니다.
왜 가능한 상태가 유한한가
선행 0을 허용한 네 자리 십진 문자열은 0000부터 9999까지 10,000개뿐입니다. 카프리카 함수는 각 상태에서 다음 상태 하나를 정합니다. 유한 집합에서 함수를 계속 적용하면 언젠가는 이전에 본 상태를 다시 만나 고정점이나 순환에 들어가야 합니다. 십진 네 자리의 특별한 사실은 모든 비상수 시작 상태가 같은 고정점 6174로 들어간다는 것입니다.
정렬된 네 자릿수로 식을 만들기
내림차순 자릿수를 a≥b≥c≥d라고 하겠습니다. 큰 수는 1000a+100b+10c+d이고 작은 수는 1000d+100c+10b+a입니다. 차는 999(a-d)+90(b-c)가 됩니다.
D-A = 999(a-d)+90(b-c)
따라서 다음 값은 원래 자릿수 네 개의 구체적인 순서가 아니라 바깥 자릿수 차 a-d와 안쪽 자릿수 차 b-c에 의해 결정됩니다. 가능한 차의 조합이 크게 줄어듭니다. 전체 10,000개를 무작정 나열하지 않고도 상태를 분류해 6174로 모이는 구조를 분석할 수 있는 이유입니다.
최대 7번이라는 뜻
허용된 모든 네 자리 상태가 똑같이 7번 걸리는 것은 아닙니다. 6174는 0번, 3524는 3번 걸립니다. 가장 오래 걸리는 시작값들이 7번을 필요로 하며 그보다 더 오래 걸리는 네 자리 십진 시작값은 없습니다. 이 결론은 앞의 0을 유지하고 네 자리가 모두 같은 수를 제외하는 표준 루틴을 기준으로 합니다.
예를 들어 9831은 8442→5994→5355→1998→8082→8532→6174로 7번 걸립니다. 단계 수를 셀 때 시작 상태를 1단계로 포함하는지, 첫 뺄셈을 1단계로 보는지에 따라 표기가 하나 다를 수 있으므로 계산 횟수의 정의를 밝혀야 합니다.
6174와 카프리카 수는 다른 개념입니다
카프리카 상수와 카프리카 수(Kaprekar number)는 이름이 비슷하지만 정의가 다릅니다. 카프리카 수는 제곱한 값을 두 부분으로 나눠 더했을 때 원래 수가 되는 수입니다. 예를 들어 45²=2025이고 20+25=45이므로 45는 카프리카 수입니다. 6174는 자릿수 정렬과 뺄셈 반복의 고정점입니다.
세 자리에서는 495가 나타납니다
같은 규칙을 세 자리 십진 문자열에 적용하면 모든 자리가 같지 않은 시작값은 495에 도달합니다. 954-459=495이므로 495도 고정점입니다. 하지만 자릿수의 길이나 진법을 바꾸면 항상 하나의 고정점이 생기는 것은 아닙니다. 여러 고정점이나 순환이 나타날 수 있어 6174의 성질을 모든 자릿수에 일반화할 수 없습니다.
첫 뺄셈 뒤에는 항상 9의 배수가 됩니다
어떤 정수는 각 자릿수의 합과 9로 나눈 나머지가 같습니다. 자릿수를 재배열해도 자릿수 합은 변하지 않으므로 내림차순 수 D와 오름차순 수 A는 9로 나눈 나머지가 같습니다. 따라서 D−A는 반드시 9의 배수입니다. 앞에서 얻은 식 999(a−d)+90(b−c)도 두 계수가 모두 9의 배수임을 보여 줍니다.
6174도 6+1+7+4=18이므로 9의 배수입니다. 이 성질은 첫 단계 뒤 가능한 상태를 0000, 0009, 0018 같은 9의 배수로 제한합니다. 다만 ‘9의 배수’라는 조건만으로 6174 도달을 증명할 수는 없습니다. 9의 배수는 매우 많고, 자릿수 정렬 뒤의 전이 구조를 추가로 조사해야 합니다.
같은 자릿수 묶음은 같은 다음 값으로 갑니다
3524, 4235, 2453처럼 자릿수의 순서만 다른 수들은 정렬하면 모두 5432와 2345를 만듭니다. 따라서 첫 뺄셈 이후에는 모두 3087로 합류합니다. 카프리카 함수는 숫자의 원래 배열을 잊고 자릿수의 다중집합만 사용합니다. 10,000개의 문자열을 각각 독립된 경로로 볼 필요가 없는 이유입니다.
네 자리를 중복을 허용해 오름차순으로 고르는 자릿수 다중집합은 조합 공식으로 C(13,4)=715개입니다. 그중 0000, 1111, …, 9999의 10개는 모든 자리가 같은 예외입니다. 나머지 705개 자릿수 묶음의 전이를 조사하면 모든 허용된 10,000개 문자열을 다루는 것과 같은 결론을 얻을 수 있습니다. 첫 단계 뒤에는 9의 배수라는 조건까지 더해 상태가 다시 줄어듭니다.
최대 7회는 유한 상태를 완전히 확인한 결과입니다
6174까지의 최대 횟수를 확인하는 가장 직접적인 방법은 허용된 상태마다 카프리카 함수를 반복하고 방문 경로를 기록하는 것입니다. 이미 결과를 아는 상태에 도달하면 그 뒤의 거리를 재사용할 수 있습니다. 모든 경로가 6174 또는 예외 고정점 0000 중 하나에 들어가는지 검사하고, 6174까지의 거리 최댓값을 구하면 7이 나옵니다.
이 검사는 확률 표본이 아니라 유한한 상태 공간의 전수 검사입니다. 프로그램을 사용하지 않고도 a−d와 b−c의 가능한 값을 분류해 전이표를 만들 수 있습니다. 어떤 방식을 택하든 선행 0을 보존하고 모든 자리가 같은 10개 상태를 분리해야 정확한 결론이 나옵니다.
다른 시작값 두 개를 비교해 보기
2111은 2111−1112=0999로 시작해 1000의 경로와 합류합니다. 반면 2005는 5200−0025=5175, 7551−1557=5994, 9954−4599=5355로 이동합니다. 시작값이 비슷해도 경로 길이와 중간값은 달라질 수 있지만, 자릿수 묶음이 같은 상태를 만나면 그 뒤 경로는 완전히 같습니다.
| 시작값 | 첫 결과 | 6174까지 뺄셈 횟수 |
|---|---|---|
| 3524 | 3087 | 3 |
| 2111 | 0999 | 5 |
| 2005 | 5175 | 7 |
| 9831 | 8442 | 7 |
| 6174 | 6174 | 0 |
프로그램으로 계산할 때 주의할 점
- 숫자를 네 글자 문자열로 바꾸고 왼쪽을 0으로 채웁니다.
- 오름차순 배열에서 0123을 정수 123으로 변환해 빼도 되지만 다음 반복 전에 다시 0123 형식으로 채웁니다.
- 네 문자가 모두 같은지 시작 전에 검사해 0000 고정점을 별도로 처리합니다.
- 6174에 도달했는지뿐 아니라 반복 횟수 정의를 명확히 합니다.
- 다른 진법을 실험할 때는 자릿수 변환과 뺄셈을 같은 진법으로 수행합니다.
카프리카 상수 핵심 정리
네 자리 십진수의 자릿수를 내림차순과 오름차순으로 배열하고 큰 수에서 작은 수를 빼는 과정을 반복하면, 네 자리가 모두 같지 않은 모든 시작값은 최대 7번 안에 6174에 도달합니다. 선행 0은 네 자리의 일부로 유지해야 합니다. 모든 자리가 같은 수는 0000으로 가므로 예외입니다.
6174는 7641-1467=6174를 만족하는 고정점입니다. 이 결과는 십진법의 네 자리라는 조건에 특화되어 있습니다. 세 자리에서는 495가 나타나고 다른 길이나 진법에서는 고정점과 순환 구조가 달라질 수 있습니다.