p進整数となる分数のp進展開

p進整数となる分数をどうp進展開するか

最近p進数について何度か記事を書いていく中で、ふと疑問に思ったことがある。例として p=5の場合を考える。このとき、 \frac{10}{3}は5進整数である。なぜなら、5進付値が以下のように0以上になるからである。

 \displaystyle{
\begin{eqnarray}
\mathrm{ord}\left(\frac{10}{3} \right) &=& \mathrm{ord}\left(5 \cdot \frac{2}{3} \right) \\
                                       &=& 1 \ge 0
\end{eqnarray}
}

では、この数を5進展開すると、どのように表されるだろうか?p進整数のp進展開とは、p進整数を以下のように表すことであった。

 \displaystyle{
\sum_{n=0}^{\infty} a_n p^{n}\ (a_i \in \mathbb{Z}/p\mathbb{Z},\ i = 0, 1, 2, \cdots)
} *1

一見すると、 a_0 = 0,\ a_1 = \frac{2}{3}とすれば良さそうであるが、残念ながら \frac{2}{3}は整数ではない。しかし、5進整数である以上、一意な5進展開が存在するはずである。一体どのようにすれば5進展開できるのであろうか?

無限級数を利用した解決法

上記の疑問について、なかなかよさ気な解決策を思いついたので、それについて書いてみる。なお、概ね私が自分で考えたことなので、合っている保証はないという点はご注意頂きたい。

まず、問題を少し一般化してみよう。すなわち、任意の0でない有理数のうち、p進整数となるものは q = p^k \frac{a}{b}( p素数 kは0以上の整数、 a \in \mathbb{Z}, b \in \mathbb{N} \frac{a}{b}は既約分数であり、 a, bはどちらも pで割りきれない)と書ける。このとき、 qがどのようにp進展開されるかを考えてみよう。

 p, bが互いに素であることから、 pl + bm =1を満たす整数 l, mが存在する。この時、以下の級数を考える。

 \displaystyle{
\sum_{i=0}^{n} (pl)^{i} = \frac{(pl)^{n+1}-1}{pl - 1}
}

これは実数としては正または負の無限大に発散するのであるが、p進数としてはどのような数に収束するかを考えてみる。 r = \frac{-1}{pl-1}と置くと、上記級数とrのp進距離は以下のように計算できる。

 \displaystyle{
\begin{eqnarray}
\left| \frac{(pl)^{n+1}-1}{pl - 1} -r \right|_p &=& \left| \frac{(pl)^{n+1}}{pl - 1} \right|_p \\
                                                &=& \left| p^{n+1} \cdot \frac{l^{n+1}}{pl - 1} \right|_p \\
                                                &\le& \frac{1}{p^{n+1}}
\end{eqnarray}
}

 \lim_{n \to \infty} \frac{1}{p^{n+1}} = 0より、この級数 rにp進収束することが分かる。よって、p進数の世界では以下が成立する。

 \displaystyle{
\sum_{i=0}^{\infty} (pl)^{i} = \frac{-1}{pl-1}
}

ここで、 pl + bm =1を変形して pl -1 = -bmとなるので、これを代入すると以下のようになる。

 \displaystyle{
\sum_{i=0}^{\infty} (pl)^{i} = \frac{1}{bm}
}

これの両辺に p^k amをかけて左辺と右辺を入れ替えると、以下の式が得られる。

 \displaystyle{
p^k \frac{a}{b} = p^k am \sum_{i=0}^{\infty} (pl)^{i}
}

左辺はまさにp進展開が知りたかった有理数 qそのものである。もう少し整理してみる。

 \displaystyle{
q = \sum_{i=0}^{\infty} (aml^{i}) p^{i+k}
}

ここで、lとmのどちらか片方は定義より明らかに負になる。もし l<0だとすると、 l^iの項がiの偶奇によって正になったり負になったりしてしまい、p進展開の定義と合わなくなってしまう。そのため、 l>0だと都合がよい。もし偶然 l>0となっていればそれでよい。もし l<0の場合は、 pl + bm =1の両辺を2乗したものを考える。

 \displaystyle{
\begin{eqnarray}
(pl + bm)^2 &=& 1^2 \\
(pl)^2 + 2plbm + (bm)^2 &=& 1 \\
p(pl^2) + b(2plm + bm^2) &=& 1
\end{eqnarray}
}

ここで、 l' = pl^2,\ m' = 2plm + bm^2と置くと、 pl' + bm' = 1となっている。また、 l' >0である。よって l', m'を改めて l, mと置き直せば、 l>0とできるのである。

これでほぼp進展開が得られた。あとは \left|aml^{i}\right| \in \mathbb{Z}/p\mathbb{Z}となっていればよい。偶然そうなっていればそれでよいし、もし p \le \left|aml^{i}\right| であれば、適宜桁を繰り上げてやれば、p進展開が得られる。が、そこまで考慮して綺麗に定式化する方法が分からないので、あとは具体的な有理数に対して上記の手続きを適用するときに考えることにしよう。

具体例

冒頭で取り上げた \frac{10}{3}を上記の方法で5進展開してみよう。これは 5\cdot \frac{2}{3}となるので、 k=1, a=2, b=3である。また、 5l + 3m = 1を満たす l, mで、 l >0となるものを探してみると、 (l, m) = (2, -3)が該当することが分かる。これより、以下のような無限級数が得られる。

 \displaystyle{
\begin{eqnarray}
\frac{10}{3} &=& \sum_{i=0}^{\infty} (2\cdot (-3) \cdot 2^{i}) 5^{i+1} \\
             &=& \sum_{i=0}^{\infty} (-3 \cdot 2^{i+1}) 5^{i+1} \\
             &=& -(6 \cdot 5 + 12 \cdot 5^2 + 24 \cdot 5^3 + 48 \cdot 5^4 + 96 \cdot 5^5 + \cdots)
\end{eqnarray}
}

さて、各iについて 5^iの係数の絶対値が5以上になってしまっているので、これを順次繰り上げていく必要がある。例えば、 6 = 1 + 5とすると、この級数は以下のようになる。

 \displaystyle{
\frac{10}{3} = -(1 \cdot 5 + 13 \cdot 5^2 + 24 \cdot 5^3 + 48 \cdot 5^4 + 96 \cdot 5^5 + \cdots)
}

次に、 13 = 3 + 2 \cdot 5とすれば、以下のように変形できる。

 \displaystyle{
\frac{10}{3} = -(1 \cdot 5 + 3 \cdot 5^2 + 26 \cdot 5^3 + 48 \cdot 5^4 + 96 \cdot 5^5 + \cdots)
}

さらに、 26 = 1 + 5^2とすれば、以下のように変形できる。

 \displaystyle{
\frac{10}{3} = -(1 \cdot 5 + 3 \cdot 5^2 + 1 \cdot 5^3 + 48 \cdot 5^4 + 97 \cdot 5^5 + \cdots)
}

同じように、 48 = 3 + 4 \cdot 5 + 5^2とすれば、以下のように変形できる。

 \displaystyle{
\frac{10}{3} = -(1 \cdot 5 + 3 \cdot 5^2 + 1 \cdot 5^3 + 3 \cdot 5^4 + 101 \cdot 5^5 + \cdots)
}

これで最後にしよう。 101 = 1 + 4 \cdot 5^2とすれば、以下のように変形できる。

 \displaystyle{
\frac{10}{3} = -(1 \cdot 5 + 3 \cdot 5^2 + 1 \cdot 5^3 + 3 \cdot 5^4 + 1 \cdot 5^5 + \cdots)
}

結局、 \frac{10}{3}をp進展開すると、以下のようになることが分かった。

 \displaystyle{
\frac{10}{3} = -\cdots 131310
}

これを見ると、各桁に1と3が交互に並ぶのではないかと予想できる。これが正しいかどうか計算してみよう。もし1と3が交互に現れるのだとすると、そのような数は1が現れる桁と3が現れる桁をそれぞれ足し合わせることで、以下のように計算できる。

 \displaystyle{
\begin{eqnarray}
 -\left(\sum_{i=0}^{\infty} 5\cdot 25^{i} + \sum_{i=0}^{\infty} 75 \cdot 25^{i} \right) &=& -\left(\frac{-5}{25-1} + \frac{-75}{25-1} \right) \\
             &=& \frac{80}{24} \\
             &=& \frac{10}{3}
\end{eqnarray}
}

最初の等号はp進数としての収束を表していることに注意して欲しい。以上により、1と3が交互に並ぶという仮説は正しいことが分かった。恐らくだが、通常の有理数と同じように、p進数においても有理数は無限に桁が続いたとしても、それが循環するようになっているのかもしれない。

ちなみに、このようにして得られたp進展開からp進付値は1であることが容易に分かるが、これは冒頭で述べた事実と一致している。

まとめ

以上、p進整数となるような有理数のp進展開について述べた。このように具体的な計算例については、数学書では特に説明されないため、実際に計算することで得られた知見は大変有意義であった。

今回は突然疑問に思ったことを記事にしたくなったため、元々の予定とずれてしまったが、まあそんな日があっても良いだろう。

追記

本文中では、結論として \frac{10}{3} = -\cdots 131310というように、マイナスが付いた形でのp進展開を行った。これの両辺に3をかけると、 10 = -\cdots 444430となるわけだが、どうにも両者が一致しているような気がしない。また、10の5進展開は 2 \cdot 5のはずであるから、5進展開が2通り存在することになってしまっているようにも見える。p進展開はただ一通りになされるはずであるから、これは何かがおかしい。

この原因は、おそらく5進展開の先頭についたマイナスにある。調べたところ、どうやらp進展開というのはすべて正の数として表現できそうだということがわかった。そこで、この追記では負の数のp進展開について考え、 \frac{10}{3}の正の数としての5進展開を示す。

まず、簡単なところからはじめよう。 p=5としたとき、3と-3を5で割った余りはそれぞれいくつになるだろうか?3の方は当然余り3であるが、-3の方は余り2になる。なぜなら、 -3 = 5 \cdot (-1) + 2のように表せるからである。このように、負の数の剰余を考えると、それは正の数として表現できる。また、自然数 nに対して、 n -nの剰余というのは、一般的には異なる値になる。

ここで、-3の剰余を求めた式を少し変更すると、 5-3 = 2とも書ける。これは、ある数(ここでは-3)に5の倍数をいくら足しても、5で割った余りは変わらないという事実を表していると考えることができる。すなわち、 -3 \equiv 2 (\mod 5)なのである。

さて、-3を5で割った余りが2だったので、-3と2は5進数として等しいのだろうか?答えは否である。なぜなら、これらは25で割った余りが異なるからだ。2を25で割った余りは2、-3を25で割った余りは22になる。これは、 -3 = 25 \cdot (-1) + 22となるからである。ここで、22は5で割った余りが2であり、かつ25で割った余りが22であるため、5進数としては2と比べてより-3に近い数であると言える。また、先ほどと同様の変形をすると 25 - 3 = 22が得られる。ある数に25の倍数を足しても、25で割った余りは変わらないため、 -3 \equiv 22 (\mod 25)となるのである。

このようなことを繰り返すと、 -3 \equiv 5^m -3 (\mod 5^m)となることがわかる。これが無限に大きいmについて成立すれば、両者は5進数として等しくなるはずである。 5^mは5進展開すると 10\cdots 00(0がm個)と表せるのだから、 \cdots 0000 (無限の彼方に1が立っている)という数を-3に足して得られる正の数は、5進数として-3に等しいと言える。これを具体的に計算すると、以下のようになる。

 \displaystyle{
\cdots 000000 - 3 = \cdots 444442
}

この式の右辺こそが、まさに-3の5進展開となるのである。

では、ここでついに \frac{10}{3}= -\cdots 131310の正の数としての5進展開を考える。要するに、無限の彼方に1が立ったような5進数を足してやればよいのである。

 \displaystyle{
(\cdots 000000) - (\cdots 131310) = \cdots 313140
}

この式に3をかけて、10になるかどうか見てみよう。

 \displaystyle{
\cdots 1313140 \times 3 = \cdots 000020
}

おや、先頭の無限に続く0はさておき、値が20になったぞ?というのは当然で、これは5進数表記だからである。5進数表記での20は10進数に直すと10になるので、これは確かに \frac{10}{3}の5進展開を表していたと言える。

結局、本文で示したような負のp進展開を考えてしまうと、p進展開が一意でなくなってしまうので、ここで示したように正の数に直してやらないといけないのだろうと思われる。

もっとも、私が考える程度のことはすでに考えた人がいるようで、分数のp進展開を最初から正の数として求める方法が存在するようである。それについては下記のサイトを参照されたい。

d.hatena.ne.jp

*1:以前の記事と添字の付け方を若干変えているが、同じことである。