数論におけるp-進数
📂整数論数論におけるp-進数
定義
素数 p と整数 a∈Z に対して次のように定義された vp を a の p-進付値と言う。
vp(a):=sup{e∈Z:pe∣a}
定理
- [0]: すべての素数 p に対して
vp(0)=∞
- [1]: vp(xy)=vp(x)+vp(y)
- [2]: vp(x+y)≥min{vp(x),vp(y)}
- [3]: n∈N、x,y∈Z、素数 p が
gcd(n,p)=1p∣(x∓y)p∤xp∤y
を満たすならば
vp(xn±yn)=vp(x±y)
- [4]: x,y∈Z、素数 p=2 が
p∣(x−y)p∤xp∤y
を満たすならば
vp(xp−yp)=vp(x−y)+1
- b∣a は b が a の約数であることを示す。
- 付値という言葉は値を与えるという意味で、直接韓国語に訳すと値付けともなるが、両方ともあまりに不十分なので、英語のValuationを使うことを推奨する。
説明
大学の暗号理論を学んでいた時、教科書が p の整数環ではなく、わざわざ商環の形を使っているのを見て、なぜそうなのか教授に質問したことがある。その時、教授はそれが数論では主に使われる p-進の研究と区別するためだと答えた。p-進の数を学ぶということは、数論の大きなカーテンを開くことになるかもしれない。
簡単に言えば、p-進付値というのは、与えられた自然数で p の冪乗が何乗で掛けられているかを見ることと変わりない。例えば、素数 p=3 に対して 63=32⋅71 の 3-進付値は v3(63)=2 であり、v7(63)=1 だ。他方で、素因数分解した時に見えない数、例えば 2-進付値は自明に 20∣63 なので、v2(63)=0 である。
証明
[0]
b が a の約数である、つまり b∣a であることは、ak=b を満たす整数 k∈Z が存在することを意味する。すべての e∈Z に対して、pe⋅k=0 を満たす k=0 が存在するので、sup{e∈Z:pe∣0}=∞ である。
■
[1]
vp(a) は a で p の冪乗を数えることなので、自然に vp(xy)=vp(x)+vp(y) が成立する。
■
[2]
ある X,Y∈ に対して x,y を次のように表してみよう。
x:=pvp(x)Xy:=pvp(y)Y
一般性を失わずに vp(x)≥vp(y) とすると
x+y=pvp(y)(pvp(x)−vp(y)X+Y)
従って、少なくとも vp(x+y)≥vp(y) を得る。
■
[3]
パート1.
xn−yn を因数分解すると
xn−yn=(x−y)(xn−1+xn−2y+⋯xyn−2+yn−1)
vp の定義により、二番目の因数 ∑t=0n−1x(n−1)−tyt が p の約数を持たなければ、vp(xn−yn) も vp(x−y) も同じである。これを式で書けば、以下のようになる。
vp(xn−yn)=vp(x−y)
パート2. vp(xn−yn)=vp(x−y)
p∣(x−y) だと仮定すると、x−y≡0(modp) であり、つまり x≡y(modp) なので
t=0∑n−1x(n−1)−tyt≡≡t=0∑n−1x(n−1)−txtn⋅xn−1(modp)
しかし、p∤x であり、gcd(n,p)=1 だと仮定すると
t=0∑n−1x(n−1)−tyt≡0(modp)
したがって、次を得る。
vp(xn−yn)=vp(x−y)
パート3. vp(xn+yn)=vp(x+y)
パート2で得た等式から、符号が変わるだけである。−y 代わりに y を代入すると
vp(xn−(−y)n)=vp(x−(−y))
つまり、次を得る。
vp(xn+yn)=vp(x+y)
■
[4]
パート1.
vp(xp−yp)=vp(x−y)+1
これは、(x−y) と (xp−yp) を素因数分解した時、p が正確に 1 だけさらに掛けられていることと同値である。これを示すために**証明[3]**と同じように xp−yp を因数分解してみる。
xp−yp=(x−y)(xp−1+xp−2y+⋯xyp−2+yp−1)
p が正確に 1 だけ掛けられていることは、二番目の因数 ∑t=0p−1x(p−1)−tyt が p の倍数として表れるが、p2 の倍数としては表れないことを意味する。
p∣t=0∑p−1x(p−1)−tytp2∤t=0∑p−1x(p−1)−tyt
パート2. p∣∑t=0p−1x(p−1)−tyt
p∣(x−y) だと仮定すると、x−y≡0(modp) であり、つまり x≡y(modp) なので
t=0∑p−1x(p−1)−tyt≡≡≡t=0∑p−1x(p−1)−txtp⋅xp−10(modp)
従って、p∣∑t=0p−1x(p−1)−tyt である。
パート3. p2∤∑t=0p−1x(p−1)−tyt
x≡y(modp) なので、y=x+kp としてk∈Z を設定できる。t=1,⋯,p−1 としてインデックスを固定し、x(p−1)−tyt を x に対して展開してみると (modp2) から
x(p−1)−tyt≡≡≡≡x(p−1)−t(x+kp)tx(p−1)−t(xt+txt−1kp+2t(t−1)xt−2k2⋅p2+⋯)x(p−1)−t(xt+txt−1kp)+O(p2)xp−1+tkpxp−2(modp2)
元の級数に戻って見ると
t=0∑p−1x(p−1)−tyt≡≡≡≡≡t=0∑p−1[xp−1+tkpxp−2]pxp−1+2p(p−1)kpxp−2pxp−1+2p−1kxp−2⋅p2pxp−1(modp2)0(modp2)
従って、p2∣∑t=0p−1x(p−1)−tyt である。
■