카프리카 수(Kaprekar number)

written by jjycjn   2017. 7. 1. 03:31

카프리카 수(Karprekar number)

정수 중에는 특별한 이름이 붙은 수들이 많은데, 그 중에는 인도의 수학자 카프리카(Kaprekar)의 이름이 붙은 카프리카 수(Karprekar number)라는 것이 있는데, 카프리카 수는 다음과 같은 유래를 가지고 있다.


인도의 어느 지역에 있는 철도의 선로 옆에는 $3025km$라고 쓰인 이정표가 있었다. 그런데 어느 날 심한 폭풍우로 이 이정표가 쓰러지면서 두 동강이 났다. 그래서 이정표에 쓰여 있던 $3025$가 정확히 절반으로 잘려 $30$과 $25$로 나누어지게 되었다. 마침 이곳을 지나던 인도의 수학자 카프리카는 쓰러진 이정표의 두 숫자를 보고 재미있는 점을 발견했다. “$30+25=55$이고 $55^2=3025$이네. $55$는 제곱을 한 후에 반으로 나누어 더하면 원래의 수가 되는구나.” 그 후 사람들은 이와 같은 성질을 갖는 수를 카프리카 수라고 했다.


일반적으로 $d$ 자리의 카프리카 수의 정의는 아래와 같다.


정의. 카프리카 수(Kaprekar number) $d$ 자리의 양의 정수 $n$에 대하여, 두 정수 $0< a,\, b < 10^d$가 존재하여 $n$이 아래의 두 조건을 만족하면 카프리카 수라 한다.

\[ n^2 = a \cdot 10^d + b, \quad n = a+b. \]


따라서 정의에 따라 한자리의 카프리카 수는 $1$과 $9$뿐임을 알 수 있다.


카프리카 수를 좀 더 이해해 보기 위하여 두자리의 카프리카 수를 모두 구해보자. 먼저 $n$이 카프리카 수라 해 보자. 그러면 $n^2 = 100a + b$라 나타낼 수 있다. 여기서 $a$와 $b$는 모두 두자리 이하의 정수이고 다음을 만족한다.

\[ (a+b)^2 = 100x + y. \]

위 식을 $a$에 관하여 정리하면

\[ a^2 + 2ab - 100a + b^2 - b = a^2 + 2a(b-50) + (b^2 - b) = 0. \]

이 식을 만족하는 $a$는 정수여야 하므로 판별식 $D$가 완전제곱수여야만 한다. 이제 $D$를 구해보면

\[ D := (b-50)^2 - (b^2 - b) = 2500 - 99b. \]

먼저 $D$가 $0$보다 크거나 같아야 하므로 $b$는 $1$부터 $25$ 사이의 정수라는 것을 알 수 있다. 그 중 $D$가 완전제곱식이 되게 하는 $b$는 $1$과 $25$밖에 없다. 따라서 $b = 1$일 때 $a$를 계산하면 $a=98$이 되는데 ($a=0$은 문제의 조건에 맞지 않으므로 제외), 이 경우 $n = 98 + 1 = 99$가 카프리카 수라는 사실을 알 수 있다. 또한 $b = 25$일 때 $a$를 계산하면 $20$ 혹은 $30$이 나온다. 따라서 $n = 45$와 $n=55$가 카프리카 수라는 것을 알 수 있다. 따라서 두자리의 카프리카 수는 $45, 55, 99$의 세개뿐임을 알 수 있다.


Matlab 코드

이 문제도 Matlab를 이용하여 간단히 해결할 수 있다. 먼저 문제를 해결하는데 이용한 Matlab 코드는 아래와 같다.

function [] = KaprekaNumber(d)
for n = 10^(d-1) : 10^d - 1
    x = n^2;
    a = floor(x/10^d);
    b = rem(x, 10^d);
    if a+b == n
        format = ('%d : %d^2 = %0*d,  %0*d + %0*d = %d\n');
        fprintf(format, n, n, 2*d, x, d, a, d, b, n);
    end
end
end

여기서 함수의 입력변수인 $d$는 카프리카 수의 자릿수를 나타낸다. 이제 $d$에 $1$부터 $5$까지의 값을 넣어가면서 모든 카프리카 수를 출력해보면,

>> KaprekaNumber(1)
1 : 1^2 = 01,  0 + 1 = 1
9 : 9^2 = 81,  8 + 1 = 9

>> KaprekaNumber(2)
45 : 45^2 = 2025,  20 + 25 = 45
55 : 55^2 = 3025,  30 + 25 = 55
99 : 99^2 = 9801,  98 + 01 = 99

>> KaprekaNumber(3)
297 : 297^2 = 088209,  088 + 209 = 297
703 : 703^2 = 494209,  494 + 209 = 703
999 : 999^2 = 998001,  998 + 001 = 999

>> KaprekaNumber(4)
2223 : 2223^2 = 04941729,  0494 + 1729 = 2223
2728 : 2728^2 = 07441984,  0744 + 1984 = 2728
4950 : 4950^2 = 24502500,  2450 + 2500 = 4950
5050 : 5050^2 = 25502500,  2550 + 2500 = 5050
7272 : 7272^2 = 52881984,  5288 + 1984 = 7272
7777 : 7777^2 = 60481729,  6048 + 1729 = 7777
9999 : 9999^2 = 99980001,  9998 + 0001 = 9999

>> KaprekaNumber(5)
17344 : 17344^2 = 0300814336,  03008 + 14336 = 17344
22222 : 22222^2 = 0493817284,  04938 + 17284 = 22222
77778 : 77778^2 = 6049417284,  60494 + 17284 = 77778
82656 : 82656^2 = 6832014336,  68320 + 14336 = 82656
95121 : 95121^2 = 9048004641,  90480 + 04641 = 95121
99999 : 99999^2 = 9999800001,  99998 + 00001 = 99999

참고로 카프리카 수들의 목록은 OEIS의 수열 A006866에서 찾을 수 있다.

  ::  
  • 공유하기  ::