Update the modulo patterns article to use new delimiters
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
parent
81eef51e88
commit
357a3bef09
|
@ -76,15 +76,15 @@ If a number doesn't cleanly divide another (we're sticking to integers here),
|
||||||
what's left behind is the remainder. For instance, dividing 7 by 3 leaves us with a remainder 1.
|
what's left behind is the remainder. For instance, dividing 7 by 3 leaves us with a remainder 1.
|
||||||
On the other hand, if the remainder is zero, then that means that our dividend is divisible by the
|
On the other hand, if the remainder is zero, then that means that our dividend is divisible by the
|
||||||
divisor (what a mouthful). In mathematics, we typically use
|
divisor (what a mouthful). In mathematics, we typically use
|
||||||
\\(a|b\\) to say \\(a\\) divides \\(b\\), or, as we have seen above, that the remainder of dividing
|
\(a|b\) to say \(a\) divides \(b\), or, as we have seen above, that the remainder of dividing
|
||||||
\\(b\\) by \\(a\\) is zero.
|
\(b\) by \(a\) is zero.
|
||||||
|
|
||||||
Working with remainders actually comes up pretty frequently in discrete math. A well-known
|
Working with remainders actually comes up pretty frequently in discrete math. A well-known
|
||||||
example I'm aware of is the [RSA algorithm](https://en.wikipedia.org/wiki/RSA_(cryptosystem)),
|
example I'm aware of is the [RSA algorithm](https://en.wikipedia.org/wiki/RSA_(cryptosystem)),
|
||||||
which works with remainders resulting from dividing by a product of two large prime numbers.
|
which works with remainders resulting from dividing by a product of two large prime numbers.
|
||||||
But what's a good way to write, in numbers and symbols, the claim that "\\(a\\) divides \\(b\\)
|
But what's a good way to write, in numbers and symbols, the claim that "\(a\) divides \(b\)
|
||||||
with remainder \\(r\\)"? Well, we know that dividing yields a quotient (possibly zero) and a remainder
|
with remainder \(r\)"? Well, we know that dividing yields a quotient (possibly zero) and a remainder
|
||||||
(also possibly zero). Let's call the quotient \\(q\\).
|
(also possibly zero). Let's call the quotient \(q\).
|
||||||
{{< sidenote "right" "r-less-note" "Then, we know that when dividing \(b\) by \(a\) we have:" >}}
|
{{< sidenote "right" "r-less-note" "Then, we know that when dividing \(b\) by \(a\) we have:" >}}
|
||||||
It's important to point out that for the equation in question to represent division
|
It's important to point out that for the equation in question to represent division
|
||||||
with quotient \(q\) and remainder \(r\), it must be that \(r\) is less than \(a\).
|
with quotient \(q\) and remainder \(r\), it must be that \(r\) is less than \(a\).
|
||||||
|
@ -111,7 +111,7 @@ larger than \(q\).
|
||||||
|
|
||||||
We only really care about the remainder here, not the quotient, since it's the remainder
|
We only really care about the remainder here, not the quotient, since it's the remainder
|
||||||
that determines if something is divisible or not. From the form of the second equation, we can
|
that determines if something is divisible or not. From the form of the second equation, we can
|
||||||
deduce that \\(b-r\\) is divisible by \\(a\\) (it's literally equal to \\(a\\) times \\(q\\),
|
deduce that \(b-r\) is divisible by \(a\) (it's literally equal to \(a\) times \(q\),
|
||||||
so it must be divisible). Thus, we can write:
|
so it must be divisible). Thus, we can write:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
|
@ -134,7 +134,7 @@ section](#adding-two-congruences) to see how it works):
|
||||||
a+c \equiv b+d\ (\text{mod}\ k).
|
a+c \equiv b+d\ (\text{mod}\ k).
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Multiplying both sides by the same number (call it \\(n\\)) also works (once
|
Multiplying both sides by the same number (call it \(n\)) also works (once
|
||||||
again, you can find the proof in [this section below](#multiplying-both-sides-of-a-congruence)).
|
again, you can find the proof in [this section below](#multiplying-both-sides-of-a-congruence)).
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
|
@ -151,7 +151,7 @@ we have:
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
From this, we can deduce that multiplying by 10, when it comes to remainders from dividing by 3,
|
From this, we can deduce that multiplying by 10, when it comes to remainders from dividing by 3,
|
||||||
is the same as multiplying by 1. We can clearly see this by multiplying both sides by \\(n\\).
|
is the same as multiplying by 1. We can clearly see this by multiplying both sides by \(n\).
|
||||||
In our notation:
|
In our notation:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
|
@ -166,8 +166,8 @@ Multiplying by that number is _also_ equivalent to multiplying by 1!
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
We can put this to good use. Let's take a large number that's divisible by 3. This number
|
We can put this to good use. Let's take a large number that's divisible by 3. This number
|
||||||
will be made of multiple digits, like \\(d_2d_1d_0\\). Note that I do __not__ mean multiplication
|
will be made of multiple digits, like \(d_2d_1d_0\). Note that I do __not__ mean multiplication
|
||||||
here, but specifically that each \\(d_i\\) is a number between 0 and 9 in a particular place
|
here, but specifically that each \(d_i\) is a number between 0 and 9 in a particular place
|
||||||
in the number -- it's a digit. Now, we can write:
|
in the number -- it's a digit. Now, we can write:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
|
@ -178,11 +178,11 @@ in the number -- it's a digit. Now, we can write:
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
We have just found that \\(d_2+d_1+d_0 \\equiv 0\\ (\\text{mod}\ 3)\\), or that the sum of the digits
|
We have just found that \(d_2+d_1+d_0 \equiv 0\ (\text{mod}\ 3)\), or that the sum of the digits
|
||||||
is also divisible by 3. The logic we use works in the other direction, too: if the sum of the digits
|
is also divisible by 3. The logic we use works in the other direction, too: if the sum of the digits
|
||||||
is divisible, then so is the actual number.
|
is divisible, then so is the actual number.
|
||||||
|
|
||||||
There's only one property of the number 3 we used for this reasoning: that \\(10 \\equiv 1\\ (\\text{mod}\\ 3)\\). But it so happens that there's another number that has this property: 9. This means
|
There's only one property of the number 3 we used for this reasoning: that \(10 \equiv 1\ (\text{mod}\ 3)\). But it so happens that there's another number that has this property: 9. This means
|
||||||
that to check if a number is divisible by _nine_, we can also check if the sum of the digits is
|
that to check if a number is divisible by _nine_, we can also check if the sum of the digits is
|
||||||
divisible by 9. Try it on 18, 27, 81, and 198.
|
divisible by 9. Try it on 18, 27, 81, and 198.
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ does this work, and why does it always loop around? Why don't we ever spiral far
|
||||||
from the center?
|
from the center?
|
||||||
|
|
||||||
First, let's take a closer look at our sequence of multiples. Suppose we're working with multiples
|
First, let's take a closer look at our sequence of multiples. Suppose we're working with multiples
|
||||||
of some number \\(n\\). Let's write \\(a_i\\) for the \\(i\\)th multiple. Then, we end up with:
|
of some number \(n\). Let's write \(a_i\) for the \(i\)th multiple. Then, we end up with:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
\begin{aligned}
|
\begin{aligned}
|
||||||
|
@ -224,9 +224,9 @@ of some number \\(n\\). Let's write \\(a_i\\) for the \\(i\\)th multiple. Then,
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
This is actually called an [arithmetic sequence](https://mathworld.wolfram.com/ArithmeticProgression.html);
|
This is actually called an [arithmetic sequence](https://mathworld.wolfram.com/ArithmeticProgression.html);
|
||||||
for each multiple, the number increases by \\(n\\).
|
for each multiple, the number increases by \(n\).
|
||||||
|
|
||||||
Here's a first seemingly trivial point: at some time, the remainder of \\(a_i\\) will repeat.
|
Here's a first seemingly trivial point: at some time, the remainder of \(a_i\) will repeat.
|
||||||
There are only so many remainders when dividing by nine: specifically, the only possible remainders
|
There are only so many remainders when dividing by nine: specifically, the only possible remainders
|
||||||
are the numbers 0 through 8. We can invoke the [pigeonhole principle](https://en.wikipedia.org/wiki/Pigeonhole_principle) and say that after 9 multiples, we will have to have looped. Another way
|
are the numbers 0 through 8. We can invoke the [pigeonhole principle](https://en.wikipedia.org/wiki/Pigeonhole_principle) and say that after 9 multiples, we will have to have looped. Another way
|
||||||
of seeing this is as follows:
|
of seeing this is as follows:
|
||||||
|
@ -240,7 +240,7 @@ of seeing this is as follows:
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
The 10th multiple is equivalent to n, and will thus have the same remainder. The looping may
|
The 10th multiple is equivalent to n, and will thus have the same remainder. The looping may
|
||||||
happen earlier: the simplest case is if we pick 9 as our \\(n\\), in which case the remainder
|
happen earlier: the simplest case is if we pick 9 as our \(n\), in which case the remainder
|
||||||
will always be 0.
|
will always be 0.
|
||||||
|
|
||||||
Repeating remainders alone do not guarantee that we will return to the center. The repeating sequence 1,2,3,4
|
Repeating remainders alone do not guarantee that we will return to the center. The repeating sequence 1,2,3,4
|
||||||
|
@ -280,15 +280,15 @@ Okay, so we want to avoid cycles with lengths divisible by four. What does it me
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
If we could divide both sides by \\(k\\), we could go one more step:
|
If we could divide both sides by \(k\), we could go one more step:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
n \equiv 0\ (\text{mod}\ 9) \\
|
n \equiv 0\ (\text{mod}\ 9) \\
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
That is, \\(n\\) would be divisible by 9! This would contradict our choice of \\(n\\) to be
|
That is, \(n\) would be divisible by 9! This would contradict our choice of \(n\) to be
|
||||||
between 2 and 8. What went wrong? Turns out, it's that last step: we can't always divide by \\(k\\).
|
between 2 and 8. What went wrong? Turns out, it's that last step: we can't always divide by \(k\).
|
||||||
Some values of \\(k\\) are special, and it's only _those_ values that can serve as cycle lengths
|
Some values of \(k\) are special, and it's only _those_ values that can serve as cycle lengths
|
||||||
without causing a contradiction. So, what are they?
|
without causing a contradiction. So, what are they?
|
||||||
|
|
||||||
They're values that have a common factor with 9 (an incomplete explanation is in
|
They're values that have a common factor with 9 (an incomplete explanation is in
|
||||||
|
@ -314,8 +314,8 @@ we want to avoid those numbers that would allow for cycles of length 4 (or of a
|
||||||
If we didn't avoid them, we might run into infinite loops, where our pencil might end up moving
|
If we didn't avoid them, we might run into infinite loops, where our pencil might end up moving
|
||||||
further and further from the center.
|
further and further from the center.
|
||||||
|
|
||||||
Actually, let's revisit that. When we were playing with paths of length \\(k\\) while dividing by 9,
|
Actually, let's revisit that. When we were playing with paths of length \(k\) while dividing by 9,
|
||||||
we noted that the only _possible_ values of \\(k\\) are those that share a common factor with 9,
|
we noted that the only _possible_ values of \(k\) are those that share a common factor with 9,
|
||||||
specifically 3, 6 and 9. But that's not quite as strong as it could be: try as you might, but
|
specifically 3, 6 and 9. But that's not quite as strong as it could be: try as you might, but
|
||||||
you will not find a cycle of length 6 when dividing by 9. The same is true if we pick 6 instead of 9,
|
you will not find a cycle of length 6 when dividing by 9. The same is true if we pick 6 instead of 9,
|
||||||
and try to find a cycle of length 4. Even though 4 _does_ have a common factor with 6, and thus
|
and try to find a cycle of length 4. Even though 4 _does_ have a common factor with 6, and thus
|
||||||
|
@ -326,7 +326,7 @@ So what is it that _really_ determines if there can be cycles or not?
|
||||||
Let's do some more playing around. What are the actual cycle lengths when we divide by 9?
|
Let's do some more playing around. What are the actual cycle lengths when we divide by 9?
|
||||||
For all but two numbers, the cycle lengths are 9. The two special numbers are 6 and 3, and they end up
|
For all but two numbers, the cycle lengths are 9. The two special numbers are 6 and 3, and they end up
|
||||||
with a cycle length of 3. From this, we can say that the cycle length seems to depend on whether or
|
with a cycle length of 3. From this, we can say that the cycle length seems to depend on whether or
|
||||||
not our \\(n\\) has any common factors with the divisor.
|
not our \(n\) has any common factors with the divisor.
|
||||||
|
|
||||||
Let's explore this some more with a different divisor, say 12. We fill find that 8 has a cycle length
|
Let's explore this some more with a different divisor, say 12. We fill find that 8 has a cycle length
|
||||||
of 3, 7 has a cycle length of 12, 9 has a cycle length of 4. What's
|
of 3, 7 has a cycle length of 12, 9 has a cycle length of 4. What's
|
||||||
|
@ -340,50 +340,50 @@ for the length of a cycle:
|
||||||
k = \frac{d}{\text{gcd}(d,n)}
|
k = \frac{d}{\text{gcd}(d,n)}
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Where \\(d\\) is our divisor, which has been 9 until just recently, and \\(\\text{gcd}(d,n)\\)
|
Where \(d\) is our divisor, which has been 9 until just recently, and \(\text{gcd}(d,n)\)
|
||||||
is the greatest common factor of \\(d\\) and \\(n\\). This equation is in agreement
|
is the greatest common factor of \(d\) and \(n\). This equation is in agreement
|
||||||
with our experiment for \\(d = 9\\), too. Why might this be? Recall that sequences with
|
with our experiment for \(d = 9\), too. Why might this be? Recall that sequences with
|
||||||
period \\(k\\) imply the following congruence:
|
period \(k\) imply the following congruence:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
kn \equiv 0\ (\text{mod}\ d)
|
kn \equiv 0\ (\text{mod}\ d)
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Here I've replaced 9 with \\(d\\), since we're trying to make it work for _any_ divisor, not just 9.
|
Here I've replaced 9 with \(d\), since we're trying to make it work for _any_ divisor, not just 9.
|
||||||
Now, suppose the greatest common divisor of \\(n\\) and \\(d\\) is some number \\(f\\). Then,
|
Now, suppose the greatest common divisor of \(n\) and \(d\) is some number \(f\). Then,
|
||||||
since this number divides \\(n\\) and \\(d\\), we can write \\(n=fm\\) for some \\(m\\), and
|
since this number divides \(n\) and \(d\), we can write \(n=fm\) for some \(m\), and
|
||||||
\\(d=fg\\) for some \\(g\\). We can rewrite our congruence as follows:
|
\(d=fg\) for some \(g\). We can rewrite our congruence as follows:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
kfm \equiv 0\ (\text{mod}\ fg)
|
kfm \equiv 0\ (\text{mod}\ fg)
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
We can simplify this a little bit. Recall that what this congruence really means is that the
|
We can simplify this a little bit. Recall that what this congruence really means is that the
|
||||||
difference of \\(kfm\\) and \\(0\\), which is just \\(kfm\\), is divisible by \\(fg\\):
|
difference of \(kfm\) and \(0\), which is just \(kfm\), is divisible by \(fg\):
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
fg|kfm
|
fg|kfm
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
But if \\(fg\\) divides \\(kfm\\), it must be that \\(g\\) divides \\(km\\)! This, in turn, means
|
But if \(fg\) divides \(kfm\), it must be that \(g\) divides \(km\)! This, in turn, means
|
||||||
we can write:
|
we can write:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
g|km
|
g|km
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Can we distill this statement even further? It turns out that we can. Remember that we got \\(g\\)
|
Can we distill this statement even further? It turns out that we can. Remember that we got \(g\)
|
||||||
and \\(m\\) by dividing \\(d\\) and \\(n\\) by their greatest common factor, \\(f\\). This, in
|
and \(m\) by dividing \(d\) and \(n\) by their greatest common factor, \(f\). This, in
|
||||||
turn, means that \\(g\\) and \\(m\\) have no more common factors that aren't equal to 1 (see
|
turn, means that \(g\) and \(m\) have no more common factors that aren't equal to 1 (see
|
||||||
[this section below](#numbers-divided-by-their-textgcd-have-no-common-factors)). From this, in turn, we can deduce that \\(m\\) is not
|
[this section below](#numbers-divided-by-their-textgcd-have-no-common-factors)). From this, in turn, we can deduce that \(m\) is not
|
||||||
relevant to \\(g\\) dividing \\(km\\), and we get:
|
relevant to \(g\) dividing \(km\), and we get:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
g|k
|
g|k
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
That is, we get that \\(k\\) must be divisible by \\(g\\). Recall that we got \\(g\\) by dividing
|
That is, we get that \(k\) must be divisible by \(g\). Recall that we got \(g\) by dividing
|
||||||
\\(d\\) by \\(f\\), which is our largest common factor -- aka \\(\\text{gcd}(d,n)\\). We can thus
|
\(d\) by \(f\), which is our largest common factor -- aka \(\text{gcd}(d,n)\). We can thus
|
||||||
write:
|
write:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
|
@ -391,26 +391,26 @@ write:
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Let's stop and appreciate this result. We have found a condition that is required for a sequnce
|
Let's stop and appreciate this result. We have found a condition that is required for a sequnce
|
||||||
of remainders from dividing by \\(d\\) (which was 9 in the original problem) to repeat after \\(k\\)
|
of remainders from dividing by \(d\) (which was 9 in the original problem) to repeat after \(k\)
|
||||||
numbers. Furthermore, all of our steps can be performed in reverse, which means that if a \\(k\\)
|
numbers. Furthermore, all of our steps can be performed in reverse, which means that if a \(k\)
|
||||||
matches this conditon, we can work backwards and determine that a sequence of numbers has
|
matches this conditon, we can work backwards and determine that a sequence of numbers has
|
||||||
to repeat after \\(k\\) steps.
|
to repeat after \(k\) steps.
|
||||||
|
|
||||||
Multiple \\(k\\)s will match this condition, and that's not surprising. If a sequence repeats after 5 steps,
|
Multiple \(k\)s will match this condition, and that's not surprising. If a sequence repeats after 5 steps,
|
||||||
it also repeats after 10, 15, and so on. We're interested in the first time our sequences repeat after
|
it also repeats after 10, 15, and so on. We're interested in the first time our sequences repeat after
|
||||||
taking any steps, which means we have to pick the smallest possible non-zero value of \\(k\\). The smallest
|
taking any steps, which means we have to pick the smallest possible non-zero value of \(k\). The smallest
|
||||||
number divisible by \\(d/\\text{gcd}(d,n)\\) is \\(d/\\text{gcd}(d,n)\\) itself. We thus confirm
|
number divisible by \(d/\text{gcd}(d,n)\) is \(d/\text{gcd}(d,n)\) itself. We thus confirm
|
||||||
our hypothesis:
|
our hypothesis:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
k = \frac{d}{\text{gcd}(d,n)}
|
k = \frac{d}{\text{gcd}(d,n)}
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Lastly, recall that our patterns would spiral away from the center whenever a \\(k\\) is a multiple of 4. Now that we know what
|
Lastly, recall that our patterns would spiral away from the center whenever a \(k\) is a multiple of 4. Now that we know what
|
||||||
\\(k\\) is, we can restate this as "\\(d/\\text{gcd}(d,n)\\) is divisible by 4". But if we pick
|
\(k\) is, we can restate this as "\(d/\text{gcd}(d,n)\) is divisible by 4". But if we pick
|
||||||
\\(n=d-1\\), the greatest common factor has to be \\(1\\) (see [this section below](#divisors-of-n-and-n-1)), so we can even further simplify this "\\(d\\) is divisible by 4".
|
\(n=d-1\), the greatest common factor has to be \(1\) (see [this section below](#divisors-of-n-and-n-1)), so we can even further simplify this "\(d\) is divisible by 4".
|
||||||
Thus, we can state simply that any divisor divisible by 4 is off-limits, as it will induce loops.
|
Thus, we can state simply that any divisor divisible by 4 is off-limits, as it will induce loops.
|
||||||
For example, pick \\(d=4\\). Running our algorithm
|
For example, pick \(d=4\). Running our algorithm
|
||||||
{{< sidenote "right" "constructive-note" "for \(n=d-1=3\)," >}}
|
{{< sidenote "right" "constructive-note" "for \(n=d-1=3\)," >}}
|
||||||
Did you catch that? From our work above, we didn't just find a condition that would prevent spirals;
|
Did you catch that? From our work above, we didn't just find a condition that would prevent spirals;
|
||||||
we also found the precise number that would result in a spiral if this condition were violated!
|
we also found the precise number that would result in a spiral if this condition were violated!
|
||||||
|
@ -426,7 +426,7 @@ spiral:
|
||||||
|
|
||||||
{{< figure src="pattern_3_4.svg" caption="Spiral generated by the number 3 with divisor 4." class="tiny" alt="Spiral generated by the number 3 by summing digits." >}}
|
{{< figure src="pattern_3_4.svg" caption="Spiral generated by the number 3 with divisor 4." class="tiny" alt="Spiral generated by the number 3 by summing digits." >}}
|
||||||
|
|
||||||
Let's try again. Pick \\(d=8\\); then, for \\(n=d-1=7\\), we also get a spiral:
|
Let's try again. Pick \(d=8\); then, for \(n=d-1=7\), we also get a spiral:
|
||||||
|
|
||||||
{{< figure src="pattern_7_8.svg" caption="Spiral generated by the number 7 with divisor 8." class="tiny" alt="Spiral generated by the number 7 by summing digits." >}}
|
{{< figure src="pattern_7_8.svg" caption="Spiral generated by the number 7 with divisor 8." class="tiny" alt="Spiral generated by the number 7 by summing digits." >}}
|
||||||
|
|
||||||
|
@ -455,17 +455,17 @@ Finally, base-30:
|
||||||
### Generalizing to Arbitrary Numbers of Directions
|
### Generalizing to Arbitrary Numbers of Directions
|
||||||
What if we didn't turn 90 degrees each time? What, if, instead, we turned 120 degrees (so that
|
What if we didn't turn 90 degrees each time? What, if, instead, we turned 120 degrees (so that
|
||||||
turning 3 times, not 4, would leave you facing the same direction you started)? We can pretty easily
|
turning 3 times, not 4, would leave you facing the same direction you started)? We can pretty easily
|
||||||
do that, too. Let's call this number of turns \\(c\\). Up until now, we had \\(c=4\\).
|
do that, too. Let's call this number of turns \(c\). Up until now, we had \(c=4\).
|
||||||
|
|
||||||
First, let's update our condition. Before, we had "\\(d\\) cannot be divisible by 4". Now,
|
First, let's update our condition. Before, we had "\(d\) cannot be divisible by 4". Now,
|
||||||
we aren't constraining ourselves to only 4, but rather using a generic variable \\(c\\).
|
we aren't constraining ourselves to only 4, but rather using a generic variable \(c\).
|
||||||
We then end up with "\\(d\\) cannot be divisible by \\(c\\)". For instance, suppose we kept
|
We then end up with "\(d\) cannot be divisible by \(c\)". For instance, suppose we kept
|
||||||
our divisor as 9 for the time being, but started turning 3 times instead of 4. This
|
our divisor as 9 for the time being, but started turning 3 times instead of 4. This
|
||||||
violates our divisibility condtion, and we once again end up with a spiral:
|
violates our divisibility condtion, and we once again end up with a spiral:
|
||||||
|
|
||||||
{{< figure src="pattern_8_9_t3.svg" caption="Pattern generated by the number 8 in base 10 while turning 3 times." class="tiny" alt="Pattern generated by the number 3 by summing digits and turning 120 degrees." >}}
|
{{< figure src="pattern_8_9_t3.svg" caption="Pattern generated by the number 8 in base 10 while turning 3 times." class="tiny" alt="Pattern generated by the number 3 by summing digits and turning 120 degrees." >}}
|
||||||
|
|
||||||
If, on the other hand, we pick \\(d=8\\) and \\(c=3\\), we get patterns for all numbers just like we hoped.
|
If, on the other hand, we pick \(d=8\) and \(c=3\), we get patterns for all numbers just like we hoped.
|
||||||
Here's one such pattern:
|
Here's one such pattern:
|
||||||
|
|
||||||
{{< figure src="pattern_7_8_t3.svg" caption="Pattern generated by the number 7 in base 9 while turning 3 times." class="tiny" alt="Pattern generated by the number 7 by summing digits in base 9 and turning 120 degrees." >}}
|
{{< figure src="pattern_7_8_t3.svg" caption="Pattern generated by the number 7 in base 9 while turning 3 times." class="tiny" alt="Pattern generated by the number 7 by summing digits in base 9 and turning 120 degrees." >}}
|
||||||
|
@ -529,7 +529,7 @@ up facing up again. If we turned 480 degrees (that is, two turns of 240 degrees
|
||||||
360 can be safely ignored, since it puts us where we started; only the 120 degrees that remain
|
360 can be safely ignored, since it puts us where we started; only the 120 degrees that remain
|
||||||
are needed to figure out our final bearing. In short, the final direction we're facing is
|
are needed to figure out our final bearing. In short, the final direction we're facing is
|
||||||
the remainder from dividing by 360. We already know how to formulate this using modular arithmetic:
|
the remainder from dividing by 360. We already know how to formulate this using modular arithmetic:
|
||||||
if we turn \\(t\\) degrees \\(k\\) times, and end up at final bearing (remainder) \\(b\\), this
|
if we turn \(t\) degrees \(k\) times, and end up at final bearing (remainder) \(b\), this
|
||||||
is captured by:
|
is captured by:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
|
@ -544,18 +544,18 @@ Of course, if we end up facing the same way we started, we get the familiar equi
|
||||||
|
|
||||||
Even though the variables in this equivalence mean different things now than they did last
|
Even though the variables in this equivalence mean different things now than they did last
|
||||||
time we saw it, the mathematical properties remain the same. For instance, we can say that
|
time we saw it, the mathematical properties remain the same. For instance, we can say that
|
||||||
after \\(360/\\text{gcd}(360, t)\\) turns, we'll end up facing the way that we started.
|
after \(360/\text{gcd}(360, t)\) turns, we'll end up facing the way that we started.
|
||||||
|
|
||||||
So far, so good. What I don't like about this, though, is that we have all of these
|
So far, so good. What I don't like about this, though, is that we have all of these
|
||||||
numbers of degrees all over our equations: 72 degrees, 144 degrees, and so forth. However,
|
numbers of degrees all over our equations: 72 degrees, 144 degrees, and so forth. However,
|
||||||
something like 73 degrees (if there are five possible directions) is just not a valid bearing,
|
something like 73 degrees (if there are five possible directions) is just not a valid bearing,
|
||||||
and nor is 71. We have so many possible degrees (360 of them, to be exact), but we're only
|
and nor is 71. We have so many possible degrees (360 of them, to be exact), but we're only
|
||||||
using a handful! That's wasteful. Instead, observe that for \\(c\\) possible turns,
|
using a handful! That's wasteful. Instead, observe that for \(c\) possible turns,
|
||||||
the smallest possible turn angle is \\(360/c\\). Let's call this angle \\(\\theta\\) (theta).
|
the smallest possible turn angle is \(360/c\). Let's call this angle \(\theta\) (theta).
|
||||||
Now, notice that we always turn in multiples of \\(\\theta\\): a single turn moves us \\(\\theta\\)
|
Now, notice that we always turn in multiples of \(\theta\): a single turn moves us \(\theta\)
|
||||||
degrees, two turns move us \\(2\\theta\\) degrees, and so on. If we define \\(r\\) to be
|
degrees, two turns move us \(2\theta\) degrees, and so on. If we define \(r\) to be
|
||||||
the number of turns that we find ourselves rotated by after a single cycle,
|
the number of turns that we find ourselves rotated by after a single cycle,
|
||||||
we have \\(t=r\\theta\\), and our turning equation can be written as:
|
we have \(t=r\theta\), and our turning equation can be written as:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
kr\theta \equiv 0\ (\text{mod}\ c\theta)
|
kr\theta \equiv 0\ (\text{mod}\ c\theta)
|
||||||
|
@ -570,58 +570,58 @@ Now, once again, recall that the above equivalence is just notation for the foll
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
And finally, observing that \\(kr=kr-0\\), we have:
|
And finally, observing that \(kr=kr-0\), we have:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
kr \equiv 0\ (\text{mod}\ c)
|
kr \equiv 0\ (\text{mod}\ c)
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
This equivalence says the same thing as our earlier one; however, instead of being in terms
|
This equivalence says the same thing as our earlier one; however, instead of being in terms
|
||||||
of degrees, it's in terms of the number of turns \\(c\\) and the turns-per-cycle \\(r\\).
|
of degrees, it's in terms of the number of turns \(c\) and the turns-per-cycle \(r\).
|
||||||
Now, recall once again that the smallest number of steps \\(k>0\\) for which this equivalence holds is
|
Now, recall once again that the smallest number of steps \(k>0\) for which this equivalence holds is
|
||||||
\\(k = c/\\text{gcd}(c,r)\\).
|
\(k = c/\text{gcd}(c,r)\).
|
||||||
|
|
||||||
We're close now: we have a sequence of \\(k\\) steps that will lead us back to the beginning.
|
We're close now: we have a sequence of \(k\) steps that will lead us back to the beginning.
|
||||||
What's left is to show that these \\(k\\) steps are evenly distributed throughout our circle,
|
What's left is to show that these \(k\) steps are evenly distributed throughout our circle,
|
||||||
which is the key property that makes it possible for us to make a polygon out of them (and
|
which is the key property that makes it possible for us to make a polygon out of them (and
|
||||||
thus end up back where we started).
|
thus end up back where we started).
|
||||||
|
|
||||||
To show this, say that we have a largest common divisor \\(f=\\text{gcd}(c,r)\\), and that \\(c=fe\\) and \\(r=fs\\). We can once again "divide through" by \\(f\\), and
|
To show this, say that we have a largest common divisor \(f=\text{gcd}(c,r)\), and that \(c=fe\) and \(r=fs\). We can once again "divide through" by \(f\), and
|
||||||
get:
|
get:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
ks \equiv 0\ (\text{mod}\ e)
|
ks \equiv 0\ (\text{mod}\ e)
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
Now, we know that \\(\\text{gcd}(e,s)=1\\) ([see this section below](#numbers-divided-by-their-textgcd-have-no-common-factors)), and thus:
|
Now, we know that \(\text{gcd}(e,s)=1\) ([see this section below](#numbers-divided-by-their-textgcd-have-no-common-factors)), and thus:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
k = e/\text{gcd}(e,s) = e
|
k = e/\text{gcd}(e,s) = e
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
That is, our cycle will repeat after \\(e\\) remainders. But wait, we've only got \\(e\\) possible
|
That is, our cycle will repeat after \(e\) remainders. But wait, we've only got \(e\) possible
|
||||||
remainders: the numbers \\(0\\) through \\(e-1\\)! Thus, for a cycle to repeat after \\(e\\) remainders,
|
remainders: the numbers \(0\) through \(e-1\)! Thus, for a cycle to repeat after \(e\) remainders,
|
||||||
all possible remainders must occur. For a concrete example, take \\(e=5\\); our remainders will
|
all possible remainders must occur. For a concrete example, take \(e=5\); our remainders will
|
||||||
be the set \\(\\{0,1,2,3,4\\}\\). Now, let's "multiply back through"
|
be the set \(\{0,1,2,3,4\}\). Now, let's "multiply back through"
|
||||||
by \\(f\\):
|
by \(f\):
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
kfs \equiv 0\ (\text{mod}\ fe)
|
kfs \equiv 0\ (\text{mod}\ fe)
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
|
|
||||||
We still have \\(e\\) possible remainders, but this time they are multiplied by \\(f\\).
|
We still have \(e\) possible remainders, but this time they are multiplied by \(f\).
|
||||||
For example, taking \\(e\\) to once again be equal to \\(5\\), we have the set of possible remainders
|
For example, taking \(e\) to once again be equal to \(5\), we have the set of possible remainders
|
||||||
\\(\\{0, f, 2f, 3f, 4f\\}\\). The important bit is that these remainders are all evenly spaced, and
|
\(\{0, f, 2f, 3f, 4f\}\). The important bit is that these remainders are all evenly spaced, and
|
||||||
that space between them is \\(f=\\text{gcd}(c,r)\\).
|
that space between them is \(f=\text{gcd}(c,r)\).
|
||||||
|
|
||||||
Let's recap: we have confirmed that for \\(c\\) possible turns (4 in our original formulation),
|
Let's recap: we have confirmed that for \(c\) possible turns (4 in our original formulation),
|
||||||
and \\(r\\) turns at a time, we will always loop after \\(k=c/\\text{gcd}(c,r)\\) steps,
|
and \(r\) turns at a time, we will always loop after \(k=c/\text{gcd}(c,r)\) steps,
|
||||||
evenly spaced out at \\(\\text{gcd}(c,r)\\) turns. No specific properties from \\(c\\) or \\(r\\)
|
evenly spaced out at \(\text{gcd}(c,r)\) turns. No specific properties from \(c\) or \(r\)
|
||||||
are needed for this to work. Finally, recall from the previous
|
are needed for this to work. Finally, recall from the previous
|
||||||
section that \\(r\\) is zero (and thus, our pattern breaks down) whenever the divisor \\(d\\) (9 in our original formulation) is itself
|
section that \(r\) is zero (and thus, our pattern breaks down) whenever the divisor \(d\) (9 in our original formulation) is itself
|
||||||
divisible by \\(c\\). And so, __as long as we pick a system with \\(c\\) possible directions
|
divisible by \(c\). And so, __as long as we pick a system with \(c\) possible directions
|
||||||
and divisor \\(d\\), we will always loop back and create a pattern as long as \\(c\\nmid d\\) (\\(c\\)
|
and divisor \(d\), we will always loop back and create a pattern as long as \(c\nmid d\) (\(c\)
|
||||||
does not divide \\(d\\))__.
|
does not divide \(d\))__.
|
||||||
|
|
||||||
Let's try it out! There's a few pictures below. When reading the captions, keep in mind that the _base_
|
Let's try it out! There's a few pictures below. When reading the captions, keep in mind that the _base_
|
||||||
is one more than the _divisor_ (we started with numbers in the usual base 10, but divided by 9).
|
is one more than the _divisor_ (we started with numbers in the usual base 10, but divided by 9).
|
||||||
|
@ -652,12 +652,12 @@ up a lot of space (and were interrupting the flow of the explanation). They are
|
||||||
### Referenced Proofs
|
### Referenced Proofs
|
||||||
|
|
||||||
#### Adding Two Congruences
|
#### Adding Two Congruences
|
||||||
__Claim__: If for some numbers \\(a\\), \\(b\\), \\(c\\), \\(d\\), and \\(k\\), we have
|
__Claim__: If for some numbers \(a\), \(b\), \(c\), \(d\), and \(k\), we have
|
||||||
\\(a \\equiv b\\ (\\text{mod}\\ k)\\) and \\(c \\equiv d\\ (\\text{mod}\\ k)\\), then
|
\(a \equiv b\ (\text{mod}\ k)\) and \(c \equiv d\ (\text{mod}\ k)\), then
|
||||||
it's also true that \\(a+c \\equiv b+d\\ (\\text{mod}\\ k)\\).
|
it's also true that \(a+c \equiv b+d\ (\text{mod}\ k)\).
|
||||||
|
|
||||||
__Proof__: By definition, we have \\(k|(a-b)\\) and \\(k|(c-d)\\). This, in turn, means
|
__Proof__: By definition, we have \(k|(a-b)\) and \(k|(c-d)\). This, in turn, means
|
||||||
that for some \\(i\\) and \\(j\\), \\(a-b=ik\\) and \\(c-d=jk\\). Add both sides to get:
|
that for some \(i\) and \(j\), \(a-b=ik\) and \(c-d=jk\). Add both sides to get:
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
\begin{aligned}
|
\begin{aligned}
|
||||||
& (a-b)+(c-d) = ik+jk \\
|
& (a-b)+(c-d) = ik+jk \\
|
||||||
|
@ -666,63 +666,63 @@ that for some \\(i\\) and \\(j\\), \\(a-b=ik\\) and \\(c-d=jk\\). Add both sides
|
||||||
\Rightarrow\ & a+c \equiv b+d\ (\text{mod}\ k) \\
|
\Rightarrow\ & a+c \equiv b+d\ (\text{mod}\ k) \\
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
\\(\\blacksquare\\)
|
\(\blacksquare\)
|
||||||
|
|
||||||
#### Multiplying Both Sides of a Congruence
|
#### Multiplying Both Sides of a Congruence
|
||||||
__Claim__: If for some numbers \\(a\\), \\(b\\), \\(n\\) and \\(k\\), we have
|
__Claim__: If for some numbers \(a\), \(b\), \(n\) and \(k\), we have
|
||||||
\\(a \\equiv b\\ (\\text{mod}\\ k)\\) then we also have that \\(an \\equiv bn\\ (\\text{mod}\\ k)\\).
|
\(a \equiv b\ (\text{mod}\ k)\) then we also have that \(an \equiv bn\ (\text{mod}\ k)\).
|
||||||
|
|
||||||
__Proof__: By definition, we have \\(k|(a-b)\\). Since multiplying \\(a-b\\) but \\(n\\) cannot
|
__Proof__: By definition, we have \(k|(a-b)\). Since multiplying \(a-b\) but \(n\) cannot
|
||||||
make it _not_ divisible by \\(k\\), we also have \\(k|\\left[n(a-b)\\right]\\). Distributing
|
make it _not_ divisible by \(k\), we also have \(k|\left[n(a-b)\right]\). Distributing
|
||||||
\\(n\\), we have \\(k|(na-nb)\\). By definition, this means \\(na\\equiv nb\\ (\\text{mod}\\ k)\\).
|
\(n\), we have \(k|(na-nb)\). By definition, this means \(na\equiv nb\ (\text{mod}\ k)\).
|
||||||
|
|
||||||
\\(\\blacksquare\\)
|
\(\blacksquare\)
|
||||||
|
|
||||||
#### Invertible Numbers \\(\\text{mod}\\ d\\) Share no Factors with \\(d\\)
|
#### Invertible Numbers \\(\\text{mod}\\ d\\) Share no Factors with \\(d\\)
|
||||||
__Claim__: A number \\(k\\) is only invertible (can be divided by) in \\(\\text{mod}\\ d\\) if \\(k\\)
|
__Claim__: A number \(k\) is only invertible (can be divided by) in \(\text{mod}\ d\) if \(k\)
|
||||||
and \\(d\\) share no common factors (except 1).
|
and \(d\) share no common factors (except 1).
|
||||||
|
|
||||||
__Proof__: Write \\(\\text{gcd}(k,d)\\) for the greatest common factor divisor of \\(k\\) and \\(d\\).
|
__Proof__: Write \(\text{gcd}(k,d)\) for the greatest common factor divisor of \(k\) and \(d\).
|
||||||
Another important fact (not proven here, but see something [like this](https://sharmaeklavya2.github.io/theoremdep/nodes/number-theory/gcd/gcd-is-min-lincomb.html)), is that if \\(\\text{gcd}(k,d) = r\\),
|
Another important fact (not proven here, but see something [like this](https://sharmaeklavya2.github.io/theoremdep/nodes/number-theory/gcd/gcd-is-min-lincomb.html)), is that if \(\text{gcd}(k,d) = r\),
|
||||||
then the smallest possible number that can be made by adding and subtracting \\(k\\)s and \\(d\\)s
|
then the smallest possible number that can be made by adding and subtracting \(k\)s and \(d\)s
|
||||||
is \\(r\\). That is, for some \\(i\\) and \\(j\\), the smallest possible positive value of \\(ik + jd\\) is \\(r\\).
|
is \(r\). That is, for some \(i\) and \(j\), the smallest possible positive value of \(ik + jd\) is \(r\).
|
||||||
|
|
||||||
Now, note that \\(d \\equiv 0\\ (\\text{mod}\\ d)\\). Multiplying both sides by \\(j\\), get
|
Now, note that \(d \equiv 0\ (\text{mod}\ d)\). Multiplying both sides by \(j\), get
|
||||||
\\(jd\\equiv 0\\ (\\text{mod}\\ d)\\). This, in turn, means that the smallest possible
|
\(jd\equiv 0\ (\text{mod}\ d)\). This, in turn, means that the smallest possible
|
||||||
value of \\(ik+jd \\equiv ik\\) is \\(r\\). If \\(r\\) is bigger than 1 (i.e., if
|
value of \(ik+jd \equiv ik\) is \(r\). If \(r\) is bigger than 1 (i.e., if
|
||||||
\\(k\\) and \\(d\\) have common factors), then we can't pick \\(i\\) such that \\(ik\\equiv1\\),
|
\(k\) and \(d\) have common factors), then we can't pick \(i\) such that \(ik\equiv1\),
|
||||||
since we know that \\(r>1\\) is the least possible value we can make. There is therefore no
|
since we know that \(r>1\) is the least possible value we can make. There is therefore no
|
||||||
multiplicative inverse to \\(k\\). Alternatively worded, we cannot divide by \\(k\\).
|
multiplicative inverse to \(k\). Alternatively worded, we cannot divide by \(k\).
|
||||||
|
|
||||||
\\(\\blacksquare\\)
|
\(\blacksquare\)
|
||||||
|
|
||||||
#### Numbers Divided by Their \\(\\text{gcd}\\) Have No Common Factors
|
#### Numbers Divided by Their \\(\\text{gcd}\\) Have No Common Factors
|
||||||
__Claim__: For any two numbers \\(a\\) and \\(b\\) and their largest common factor \\(f\\),
|
__Claim__: For any two numbers \(a\) and \(b\) and their largest common factor \(f\),
|
||||||
if \\(a=fc\\) and \\(b=fd\\), then \\(c\\) and \\(d\\) have no common factors other than 1 (i.e.,
|
if \(a=fc\) and \(b=fd\), then \(c\) and \(d\) have no common factors other than 1 (i.e.,
|
||||||
\\(\\text{gcd}(c,d)=1\\)).
|
\(\text{gcd}(c,d)=1\)).
|
||||||
|
|
||||||
__Proof__: Suppose that \\(c\\) and \\(d\\) do have sommon factor, \\(e\\neq1\\). In that case, we have
|
__Proof__: Suppose that \(c\) and \(d\) do have sommon factor, \(e\neq1\). In that case, we have
|
||||||
\\(c=ei\\) and \\(d=ej\\) for some \\(i\\) and \\(j\\). Then, we have \\(a=fei\\), and \\(b=fej\\).
|
\(c=ei\) and \(d=ej\) for some \(i\) and \(j\). Then, we have \(a=fei\), and \(b=fej\).
|
||||||
From this, it's clear that both \\(a\\) and \\(b\\) are divisible by \\(fe\\). Since \\(e\\)
|
From this, it's clear that both \(a\) and \(b\) are divisible by \(fe\). Since \(e\)
|
||||||
is greater than \\(1\\), \\(fe\\) is greater than \\(f\\). But our assumptions state that
|
is greater than \(1\), \(fe\) is greater than \(f\). But our assumptions state that
|
||||||
\\(f\\) is the greatest common divisor of \\(a\\) and \\(b\\)! We have arrived at a contradiction.
|
\(f\) is the greatest common divisor of \(a\) and \(b\)! We have arrived at a contradiction.
|
||||||
|
|
||||||
Thus, \\(c\\) and \\(d\\) cannot have a common factor other than 1.
|
Thus, \(c\) and \(d\) cannot have a common factor other than 1.
|
||||||
|
|
||||||
\\(\\blacksquare\\)
|
\(\blacksquare\)
|
||||||
|
|
||||||
#### Divisors of \\(n\\) and \\(n-1\\).
|
#### Divisors of \\(n\\) and \\(n-1\\).
|
||||||
__Claim__: For any \\(n\\), \\(\\text{gcd}(n,n-1)=1\\). That is, \\(n\\) and \\(n-1\\) share
|
__Claim__: For any \(n\), \(\text{gcd}(n,n-1)=1\). That is, \(n\) and \(n-1\) share
|
||||||
no common divisors.
|
no common divisors.
|
||||||
|
|
||||||
__Proof__: Suppose some number \\(f\\) divides both \\(n\\) and \\(n-1\\).
|
__Proof__: Suppose some number \(f\) divides both \(n\) and \(n-1\).
|
||||||
In that case, we can write \\(n=af\\), and \\((n-1)=bf\\) for some \\(a\\) and \\(b\\).
|
In that case, we can write \(n=af\), and \((n-1)=bf\) for some \(a\) and \(b\).
|
||||||
Subtracting one equation from the other:
|
Subtracting one equation from the other:
|
||||||
|
|
||||||
{{< latex >}}
|
{{< latex >}}
|
||||||
1 = (a-b)f
|
1 = (a-b)f
|
||||||
{{< /latex >}}
|
{{< /latex >}}
|
||||||
But this means that 1 is divisible by \\(f\\)! That's only possible if \\(f=1\\). Thus, the only
|
But this means that 1 is divisible by \(f\)! That's only possible if \(f=1\). Thus, the only
|
||||||
number that divides \\(n\\) and \\(n-1\\) is 1; that's our greatest common factor.
|
number that divides \(n\) and \(n-1\) is 1; that's our greatest common factor.
|
||||||
|
|
||||||
\\(\\blacksquare\\)
|
\(\blacksquare\)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user