142857의 성질

2024. 1. 3. 18:32Ray 수학

https://youtu.be/YHDRo_Zx1kc

 

- YouTube

 

www.youtube.com

 

애너그램(Anagram)은 원래 단어나 문구의 문자를 재배열하여 새로운 단어나 문구를 만드는 것을 말합니다. "Listen"과 "Silent", "Eleven plus two"와 "Twelve plus one" 등 문자의 재배열을 통해 새로운 의미를 창출하는 매력적인 언어적 특성을 보여줍니다. 가장 유명한 예로는 해리 포터 시리즈에서 나오는 에너그램으로 '톰 마볼로 리들(Tom Marvolo Riddle)'의 이름을 재배열하면 '나는 볼드모트 경(I am Lord Voldemort)'이라는 문구가 되는게 유명하지요.(요새는 LE SSERAFIM $\leftrightarrow$ IM FEARLESS이 더 유명한 거 같긴 하지만) 이는 캐릭터의 진정한 정체성을 숨기는 데 사용됩니다. 그런데 수학에서도 이러한 성질을 만족하는 수가 있다는 것을 아시나요?[^1]

 

순환수(cyclic number)

순환수는 애너그램과 같이 그 자릿수의 순환 순열이 숫자 자신의 정수배가 되는 정수를 말합니다. 가장 유명한 순환수인 $142857$을 예로 보겠습니다.

 

$$\begin{align}
142857 \times 1 = 142857\\
142857 \times 2 = 285714\\
142857 \times 3 = 428571\\
142857 \times 4 = 571428\\
142857 \times 5 = 714285\\
142857 \times 6 = 857142\\
142857 \times 7 = 999999
\end{align}$$

 

이 수에 $1$부터 $6$까지 차례대로 곱한 결과를 보면 단지 숫자 배열이 바뀔 뿐이며, $7$을 곱하면 $9$가 연속된 숫자를 얻을 수 있습니다. 그리고 $999999$가 $7$로 나누어 떨어진다는 것을 이용하면

 

$$1 = \frac{7}{7} = 0.9999\cdots$$

 

$1$을 $7$로 나눈 분수의 소수 부분에서도 $142857$이 반복되며 이 순환 소수는 $142857$을 순환 마디로 갖는 다는 것을 알 수 있습니다.

 

$$
\begin{align}
\frac{1}{7} &= 0.,142857\,142857\, \cdots \\
&=0.\overline{142857}\\
\end{align}
$$

 

일반적인 증명보다 왜 이러한 현상이 일어나는지 나눗셈으로 먼저 알아보겠습니다. $7$은 소수이므로 $7$로 나눈 나머지는 $7-1=6$개가 가능합니다. 나눗셈 과정을 보면 생길 수 있는 모든 나머지 $6$개가 모두 생성됩니다.

 

 

여기서 중요한 점은, $\frac{2}{7}$에 대한 나눗셈이 $\frac{1}{7}$을 나눌 때의 세 번째 단계에서 시작한다는 것을 관찰하는 것입니다.

 

 

이것은 왜 우리가 같은 여섯 자리 숫자를 얻지만 다른 순서로 배열되어 있는지를 자명하게 설명해줍니다. 중요한건 순환마디의 수들이 아니라 나눗셈을 할 때 생기는 나머지들이죠. 분모가 $7$인 분수는 분자가 $7$의 배수가 아닌 이상 나누어 떨어지지 않습니다. 따라서 $7$로 나눈 나머지는 $7$보다 작은 자연수인 $1,2, \cdots, 6$만 가능하며 이들이 번갈아가며 나온 후 다시 같은 배열을 만들게 됩니다.

 

cyclic primes

그렇다면 이러한 배열은 $7$만이 갖는 특별한 성질일까요? 우선 이러한 현상을 자세히 알아보기 위해서는 유리수의 소수 표현이 갖는 성질에 대해 알아야합니다.

 

모든 유리수는 소수로 표현할 때, 반복되거나 끝나는 성질을 가지고 있습니다. 예를 들어, $\frac{1}{3} = 0.\overline{3}$은 $3$이 반복되는 경우이며, $\frac{1}{4} = 0.25$은 끝나는 경우입니다.

 

$$\begin{gather}
\frac{1}{3}= 0.3333\cdots = 0.\overline{3}\\
\frac{1}{4}= 0.25
\end{gather}$$

 

이 둘을 분류할 때 후자처럼 끝나는 경우는 오직 분수 $\frac{m}{n}$이 기약 분수이고 분모 $n$이 $2$와 $5$의 거듭제곱 형태($2^r \cdot 5^s$)일 때만 발생합니다.(물론, 역도 사실입니다.) 그렇다면 순환하는 숫자를 만드는 유리수는 그렇지 않은 경우이므로 분모인 소수 $p$는 $2$나 $5$가 아닙니다. 이제 $k$가 $1, 2, \cdots, p-1$ 중 하나인 분수 $\frac{k}{p}$를 보도록 하겠습니다.

 

$\frac{k}{p}$와 같이 소수 $p$를 분모로 갖는 소수표현에서는 ($p \not=7$이어도) 순환 마디를 이루는 숫자가 반드시 순환합니다. 예를 들어 $p = 13$을 보겠습니다. $\frac{k}{13}$에서 $k$가 변화할 때 순환주기를 관찰해보겠습니다. 순환마디를 보면 보면 아무런 규칙없이 수가 나열된 것처럼 보일 수 있습니다.

 

$$\begin{array}{cc} k & \text{repetend} \\ \hline 1 & 076923 \\ 2 & 153846 \\ 3 & 230769 \\ 4 & 307692 \\ 5 & 384615 \\ 6 & 461538 \\ 7 & 538461 \\ 8 & 615384 \\ 9 & 692307 \\ 10 & 769230 \\ 11 & 846153 \\ 12 & 923076 \\ \end{array}$$

 

하지만, 이 수들을 두 부분으로 나누어 보면 앞서 본 것과 같이 숫자가 재배열 됩니다. 그리고 정확하게 $p-1=12$를 순환마디의 길이인 $6$으로 나눈 $2$가지로 같은 패턴이 반복되는 것을 발견할 수 있습니다.

 

$$\begin{array}{c|c|c}
k & \text{first cyclic number class} & \text{second class} \\
\hline
1 & 076923 & \\
2 & & 153846 \\
3 & 230769 & \\
4 & 307692 & \\
5 & & 384615 \\
6 & & 461538 \\
7 & & 538461 \\
8 & & 615384 \\
9 & 692307 & \\
10 & 769230 & \\
11 & & 846513 \\
12 & 923076 & \\
\end{array}$$

 

여기서 잠깐, 순환마디의 길이는 $p-1$의 약수만 가능한데 $999,999$가 $13$의 배수이므로 $6$자리의 순환마디를 만들게 된 것 뿐입니다. 왜 이러한 성질이 반드시 생기는지 궁금하신 분들은 이전 영상을 참고해주시기 바랍니다.

 

$$\frac{r}{p} = \frac{rc}{10^{p-1} - 1}$$

 

아마 여기까지만 보신다면 이러한 성질이 $7$과 $13$에서만 성립한다고 의심하실 수도 있지만 python코드로 많은 소수들을 테스트해보아도 배열만 바뀔 뿐 같은 수들이 반복되는 사실을 알 수 있습니다.

$p = 17$에서의 순환마디

$$\begin{array}{c|c}
k&\text{repetend}\\ \hline
1& 0588235294117647\\
2& 1176470588235294\\
3& 1764705882352941\\
4& 2352941176470588\\
5& 2941176470588235\\
6& 3529411764705882\\
7& 4117647058823529\\
8& 4705882352941176\\
9& 5294117647058823\\
10& 5882352941176470\\
11& 6470588235294117\\
12& 7058823529411764\\
13& 7647058823529411\\
14& 8235294117647058\\
15& 8823529411764705\\
16& 9411764705882352\\
\end{array}$$

import numpy as np


def find_primes(limit):
    is_prime = np.ones(limit + 1, dtype=bool)
    is_prime[:2] = False
    for n in range(2, int(limit**0.5) + 1):
        if is_prime[n]:
            is_prime[n * n : limit + 1 : n] = False
    return np.nonzero(is_prime)[0]


def to_decimal(numerator, denominator):
    remainders = np.zeros(denominator, dtype=int)
    decimal = ""
    remainder = numerator % denominator
    position = 1

    while remainder and not remainders[remainder]:
        remainders[remainder] = position
        remainder *= 10
        decimal += str(remainder // denominator)
        remainder %= denominator
        position += 1

    if remainders[remainder]:
        start = remainders[remainder]
        decimal = decimal[: start - 1] + "(" + decimal[start - 1 :] + ")"
    return "0." + decimal if decimal else "0"


def find_patterns(prime):
    patterns = {}
    for k in range(1, prime):
        decimal = to_decimal(k, prime)
        part = decimal.split("(")[1][:-1] if "(" in decimal else ""
        if part and part not in patterns.values():
            patterns[k] = part
    return patterns


def to_md(limit, filename):
    primes = find_primes(limit)
    output = ""
    for prime in primes:
        patterns = find_patterns(prime)
        output += f"## Prime: {prime}\n"
        for k in sorted(patterns.keys()):
            output += f"- **{k}**: {patterns[k]}\n"

        classes = {}
        unique = set()
        for k, pattern in patterns.items():
            rotations = {
                "".join(pattern[i:] + pattern[:i]) for i in range(len(pattern))
            }
            key = frozenset(rotations)
            if key not in unique:
                unique.add(key)
                classes[key] = {k}
            else:
                classes[key].add(k)

        for key, ks in classes.items():
            members = sorted(list(ks))
            pattern = patterns[members[0]]
            output += f"\n- **Class ({', '.join(map(str, members))})**: {pattern}\n"
        output += "\n"

    with open(filename, "w", encoding="utf-8") as file:
        file.write(output)


to_md(1000, "cyclic_patterns_short.md")

 

  • $p=499$까지의 순환주기 모음

cyclic_patterns_short.md
4.44MB

 

왜 순환할까?

이러한 성질이 우연이 아니라면 증명해볼 수 있지 않을까요? 사실 순환하는 이유는 이미 나눗셈에서 보았습니다. 증명은 나눗셈을 수학적으로 다시 적는 것 뿐이죠.[^2]

 

$\frac{k}{p} = 0.\overline{a_1a_2a_3 \cdots a_\lambda}$라 하겠습니다. 분자인 $k$를 수열이라 생각하고 귀납적 관계를 나타내면 다음과 같습니다.

 

$$10k_{n} = p \cdot a_n + k_{n+1}, \quad n= 1, 2, \cdots, \lambda$$

 

여기서 $\lambda$는 순환주기의 길이$k_{\lambda+1} = k_1$이고, 앞서 정한 것처럼 $0 < k_n < p$입니다. 이 식은 (어려워보일 수 있으나) 나머지 정리를 수식으로 적은 것 뿐입니다. 다시 $p=7$을 이용해 이 식을 보도록 하죠. $k_1=1$이라 할 때, $\frac{1}{7}=0.\overline{142857}$이므로, $a_1=1$입니다.

 

$$10 \times 1 = 1 \times 7 + k_2$$

 

따라서 $k_2=3$입니다. 이를 이용해 $k_3$을 구해보면,

 

$$10 \times3=4\times7+k_3$$

 

$k_3=2$입니다. 같은 방법으로 수열을 나열하면, $k_n ={1, 3,2,6,4,5}$이 반복됩니다.


$$\begin{align}
&10 \times 1 = 1 \times 7 +3\\
\Rightarrow \quad & 10 \times 3 = 4 \times 7 +2\\
\Rightarrow \quad & 10 \times 2 = 2 \times 7 +6\\
\Rightarrow \quad & 10 \times 6 = 8 \times 7 +4\\
\Rightarrow \quad & 10 \times 4 = 5 \times 7 +5\\
\Rightarrow \quad & 10 \times 5 = 7 \times 7 +1\\
\end{align}$$

 

이때 나오는 $k_n$들은 앞선 나눗셈에서 나머지들인 셈이죠. 이 식이 성립함을 아셨다면 다시 식으로 돌아오겠습니다. 이 식에서 잠시 순환마디를 이루는 숫자$a_n$을 고려하지 않기 위해 $p$에 대한 합동식으로 나타내면 다음과 같습니다.

 

$$
\begin{align}
&10k_{n} = p \cdot a_n + k_{n+1}\\
\Rightarrow \quad & k_{n+1} \equiv 10k_n \equiv 10^n k_1 \pmod p
\end{align}
$$

 

결국 $10$이 곱해짐에 따라 $p$에 대하여 $k$의 값이 변한다는 것이죠. 예를 들어, $k_2=3$이므로, $\frac{3}{7}$은 $\frac{1}{7}$에 $10$을 곱한 수, 즉 $4$부터 소수부분이 생성됨을 알 수 있습니다. 반대로 $\frac{2}{7}$가 어떤 수로 시작하는지 알고 싶다면, 수열 $k_n$의 세번째 항이 $k_3=2$이므로, $142857$의 세번째 수인 $2$라고 찾을 수 있습니다.

 

$$\begin{align}
\frac{1}{7} = 0.\overline{142857}\\
\frac{2}{7} = 0.\overline{285714}\\
\frac{3}{7} = 0.\overline{428571}\\
\frac{4}{7} = 0.\overline{571428}\\
\frac{5}{7} = 0.\overline{714285}\\
\frac{6}{7} = 0.\overline{857142}
\end{align}$$

 

만약 $p$가 $13$이라면 순환마디의 길이가 $\lambda=6$이므로, 앞선 식에 의해 순환하는 나머지 수열이 $2$개가 생기게 되고,

 

$$\begin{gather}
{ 1, 10, 9, 12, 3, 4 }
\\
{ 2, 7, 5, 11, 6, 8 }
\end{gather}$$

 

각각의 순서에 따라 소수가 순환하는 것을 알 수 있습니다.

 

$$\begin{array}{c|c|c}
k & \text{first cyclic number class} & \text{second class} \\
\hline
1 & 076923 & \\
2 & & 153846 \\
3 & 230769 & \\
4 & 307692 & \\
5 & & 384615 \\
6 & & 461538 \\
7 & & 538461 \\
8 & & 615384 \\
9 & 692307 & \\
10 & 769230 & \\
11 & & 846513 \\
12 & 923076 & \\
\end{array}$$

 

대칭성

우리는 앞선 예시에서 한 가지 성질을 더 볼 수 있습니다. 표를 자세히 보면 순환하는 숫자들은 대칭성을 가집니다.

 

$$\begin{array}{cc}
k & \text{repetend} \\ \hline
1 & 142857 \\
2 & 285714 \\
3& 428571 \\
4 & 571428 \\
5 & 714285 \\
6 & 857142
\end{array}$$

 

이것 또한 우연일까요? $7$과 $13$의 순환주기의 길이는 모두 짝수입니다. 따라서 일반적으로 $\frac{k}{p}$를 다음과 같이 두 부분으로 나누어 표현할 수 있습니다.

 

$$\frac{k}{p} = \overline{a_1a_2 \cdots a_q , b_1b_2 \cdots b_j}$$

 

여기서 우리는 모두 $0.\overline{9}=1$이라는 것을 알고 있습니다.($0.\overline{9}=1$임을 믿지 않는 분들은 이 성질을 어떤 방법으로 증명할지 궁금합니다.) 그리고 저번 영상에서 보았듯 소수 $p$를 분모로 갖는 분수의 순환마디는 두 부분으로 나누어 더하면 항상 $9$가 반복적으로 나온다는 사실도 알고 있습니다.

 

$$\begin{align}
\frac{1}{7} \quad &; \quad 142+857=999\\
\frac{1}{13} \quad &; \quad 076+923=999\\
\frac{1}{17} \quad &; \quad 05882352+94117647=99999999\\
\frac{1}{19} \quad &; \quad 052631578+947368421=999999999
\end{align}$$

 

따라서 $\frac{1}{7}$과 $\frac{6}{7}$과 같이 더해서 $1$이 되고 순환마디의 길이가 짝수인 두 수는 다음식에 의해 반드시 대칭적일 수 밖에 없습니다.

 

$$\begin{align}
\frac{p - k}{p} &= 1 - \frac{k}{p}\\
&= 0.9999\cdots - 0.\overline{a_1a_2 \cdots a_q ,b_1 \cdots b_j}\\
&= \overline{b_jb_{j-1} \cdots b_1 , a_q \cdots a_1}
\end{align}$$

 

같은 방법으로 만약 순환마디의 길이가 홀수라면 다른 배열과 쌍대칭을 이루게 됩니다.

$$\begin{array}{c|c|c|c|c|c|c|c}
k & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\
\hline
1 & 02439 & & & & & & & \\
2 & & 04878 & & & & & & \\
3 & & & 07317 & & & & & \\
4 & & & & 09756 & & & & \\
5 & & & & & 12195 & & & \\
6 & & & & & & 14634 & & \\
7 & & & 17073 & & & & & \\
8 & & & & & 19512 & & & \\
9 & & & & & 21951 & & & \\
10 & 24390 & & & & & & & \\
11 & & & & & & & 26829 & \\
12 & & & & & & & 29268 & \\
13 & & & 31707 & & & & & \\
14 & & & & & & 34146 & & \\
15 & & & & & & & & 36585 \\
16 & 39024 & & & & & & & \\
17 & & & & & & 41463 & & \\
18 & 43902 & & & & & & & \\
19 & & & & & & 46341 & & \\
20 & & 48780 & & & & & & \\
21 & & & & & 51219 & & & \\
22 & & & & & & & & 53658 \\
23 & & & & 56097 & & & & \\
24 & & & & & & & & 58536 \\
25 & & & & 60975 & & & & \\
26 & & & & & & 63414 & & \\
27 & & & & & & & & 65853 \\
28 & & & & & & & 68292 & \\
29 & & & 70731 & & & & & \\
30 & & & 73170 & & & & & \\
31 & & & & 75609 & & & & \\
32 & & 78048 & & & & & & \\
33 & & 80487 & & & & & & \\
34 & & & & & & & 82926 & \\
35 & & & & & & & & 85365 \\
36 & & 87804 & & & & & & \\
37 & 90243 & & & & & & & \\
38 & & & & & & & 92682 & \\
39 & & & & & 95121 & & & \\
40 & & & & 97560 & & & & \\
\end{array}$$

 

우리는 숫자가 단순한 수치를 넘어서 애너그램과 같이 자유롭게 변화하고 숨겨진 의미를 담을 수 있다는 것을 발견했습니다. 숫자들은 단순히 계산을 위한 도구가 아니라, 그 자체로 하나의 아름다운 대칭을 만들죠. 여러분들도 무심코 지나치는 다양한 패턴에서 더 깊은 의미를 찾아보시는 것은 어떨까요?

 

[^1]: The Alluring Lore of Cyclic Numbers
[^2]: Some Properties of Pure Recurring Decimals