Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

位数(order)

新しい章に入りました。今回からは位数や原始根について調べていきます。

位数の定義

ak7 で割ったときの余りを並べた表を再掲します。

Excel 数論 mod7の表で位数を調べる

フェルマーの小定理によれば、
a61(mod7)
が成り立ちます(表では 1 が並んでいます)が、もちろんそれ以外にも
ak1(mod7)
になるような数 ak はあります。表で青く塗ってあるところが、それぞれの a について最小のベキ指数 kak1 をみたす数字です。たとえば a=2 の場合は k=3 のとき合同式
23=81(mod7)
を満たし、かつ k=3 はこの合同式を成り立たせる最小のベキ指数です。そこで位数(order)というものを次のように定義します。

【定義E1】ak1(modm) を満たすような最小の正整数 km に関する a の位数と定義し、ordm(a) と書きます。

7 についての位数を表から読み取ると
ord7(1)=1ord7(2)=3ord7(3)=6ord7(4)=3ord7(5)=6ord7(6)=2
となります。

位数の基本定理

たとえば a=4 のとき ord7(4)=3
431(mod7)
が成り立っています。以前に学んだ合同式ベキ乗に関する基本定理によると、
ab(modm)
であれば
anbn(modm)
が成り立つので、
431(mod7)
についても両辺を n 乗して

43n1(mod7)
が成り立ちます。すなわち

4346491(mod7)
という合同式が成り立ちます。したがって
4k1(mod7)
という合同式が成り立たせる k について

ord7(4)=3|k
が成り立つのではないかと予測できます。この段階では確証でなく予測にすぎないのは、上の議論ではたとえば 4649 の間に 1 と合同になる数がないとは断定できない(つまり別の周期で 1 と合同になる数列の存在を否定できない)ので、以下の定理を証明しておく必要があります。

【定理E1】(a,m)=1 のとき
ak1(modm)ordm(a)|k

[証明] ordm(a)=e とし、
k=eq+r(0r<e)
とおきます。
1akaeq+r(ae)qar(modm)
ae1(ae)q1(modm) なので
ar1(modm)
r<e なので、r0 とすると 位数 e より小さな正数が上の合同式を満たすことになって矛盾します。よって r=0 となります。すなわち kordm(a) で割り切れます。(証明終)

特に m が素数 p のときは、フェルマーの小定理によって
ap11(modp)
が成り立つので

ordp(a)|p1

となります。再び mod7 の位数を並べてみます。
ord7(1)=1ord7(2)=3ord7(3)=6ord7(4)=3ord7(5)=6ord7(6)=2
位数はすべて p1=71=6 の約数になっています。

p を法とする互いに合同でない集合

ak7 で割ったときの余りを並べてみます。

Excel 整数論 mod7位数表a5

たとえば a=5 の列に着目すると、7 で割ったときの余りは

50 51 52 53 54 55 56 57 58 59 510 511
1 5 4 6 2 3 1 5 4 6 2 3
スクロールできます

のように周期 ord7(5)=6 で並んでいます。つまり
50,51,52,53,54,55
は互いに合同ではなく、もし
5m5n(mod7)
が成り立つのであれば、その周期から
mn(mod6)
が成り立ちます。たとえば
5359(mod7)
が成り立っているので、
 
39(mod6)
が成り立つということです。これを一般的に述べたのが次の定理です。

【定理E2】p を素数、a を正整数とする。(a,p)=1 のとき、e=ordp(a) とおくと
a0,a1,a2,,ae1は互いに合同ではなく、
aman(modp)mn(mode)

[証明]
a0,a1,a2,,ae1 のなかに互いに合同な要素があったとして、それを
asat(modp)(0s<t<e)
とおくと、
ats1(modp)(0<ts<e)
となり、これは e の最小性に反します。よって
a0,a1,a2,,ae1
は互いに合同ではないことが示されました。また
m=eq1+r1(0r1<e)
とおくと、ae1(modp) より
am=aeq1+r1=(ae)q1ar1ar1(modp)
となります。同様に
n=eq2+r2(0r2<e)
とおくと、anar2(modp) なので
aman(modp)
が成り立つときは
ar1ar2(modp)
も成り立つことになります。r1,r2
0r1<e,0r2<e
すなわち、ともに位数 e より小さい数なので、ar1ar2 が合同になるのは r1=r2 のときだけです。つまり mne で割ると余りが同じなので
mn(mode)
が成り立ちます。(証明終)

【おすすめ記事】 ≫ Excel で約数表を作成する

 

x^k≡1(mod p)の根の個数

素数 p を法とする k 次合同方程式
xk1(modp)
の根が最大でいくつあるのかを述べたのが次の定理です。

【定理E3】xk1(modp) の根の個数は k を超えない。

[証明]
数学的帰納法で証明します。k=1 のときは
x1(modp)
なので、これは1 元 1 次合同方程式で (1,p)=1 なので解は 1 つです。次に k1(k2) のときに根の個数が k1 を超えないと仮定します。このとき合同方程式
xk1(modp)
に根が1つもないならば定理は成り立っています。もし根が1つでもあって、それを x1 とすれば
x1k1(modp)
が成り立ちます。よって
xkx1k0(modp)
左辺は x=x1 を因数にもつので、k1 次式 g(x) を用いて
xkx1k=(xx1)g(x)
と書くことができます。したがって
(xx1)g(x)0(modp)
x1 と合同でない根を x2 とすると
(x2x1)g(x)0(modp)
x2x10,(x2x1,p)=1 なので
g(x2)0(modp)
すなわち x2k1 次合同方程式の解であり、仮定によりその根の個数は k1 個を超えません。したがって、
xk1(modp)
の根の個数は k 個を超えないことになります。(証明終)

法が素数ならば、x21 の根は 2 個以内、x31 の解は 3 個以内ということです。これを n 次合同方程式の場合に一般化した定理はラグランジュの定理とよばれますが、それについてはもう少し先で紹介します。

合同計算の復習も兼ねて、7 を法とする 34 の位数を求めてみます。
(1)344(mod7)
はすぐにわかるので、両辺を 2 乗して
(34)216(mod7)
162(mod7) なので
(2)(34)22(mod7)
(1) と (2) を辺々掛けて
(34)381(mod7)
となるので、34 は 3 乗して初めて 1 と合同になることがわかります。よって 34 の位数は
ord7(34)=3
となります。

上の例では比較的簡単に位数を求めることができましたが、場合によってはなかなか 1 と合同にならないこともあります。また、あまり大きな a の位数は位数表にも載っていません。そこで a の位数を用いて ak の位数を計算する公式を導いておきます。

【定理E4】p を素数とするとき
ordp(ak)=ordp(a)(ordp(a),k)=d(d,k)ただし d=ordp(a) とする。

[証明] e=ordp(ak),f=(d,k) とすると
d=fd,k=fk
のように書けて
(d,k)=1
となります。e=ordp(ak) より
ake1(modp)
が成り立つので
d|kefd|efkd|ek
(d,k)=1 より d|e となります。
また、d=fd,k=fk より dk=kd なので
(ak)d=(ad)k1(modp)
e=ordp(ak) なので e|d となります。
d|e かつ e|d なので、
e=d=df=d(d,k)=ordp(a)(ordp(a),k)
が成立します。(証明終)

位数表 などから ord7(3)=6 を既知として、冒頭で計算した ord7(34) を定理 E4 を用いて計算してみると
ord7(34)=ord7(3)(ord7(3),4)=62=3
となります。

p-1の約数に等しい位数は必ず存在する

いつものように素数 mod7 のベキ乗表です。

Excel 数論 mod7の表で位数を調べる

71=6 の約数は 1,2,3,6 ですが、表を見ると、それぞれの約数に等しい位数が存在していることがわかります。すなわち法 7 において、最小べき指数で 1 と合同になる a を分類してみると

ordp(a)=1  a=1   (φ(1)=1 個)
ordp(a)=2  a=6   (φ(2)=1 個)
ordp(a)=3  a=2,4  (φ(3)=2 個)
ordp(a)=6  a=3,5  (φ(6)=2 個)

のようになります。また個数については、オイラー関数φ(d) 個のように表されていますが、これは偶然ではないことが以下の定理によって示されます。

【定理E5】素数 p を法として、p1 の任意の正の約数 d に等しい位数をもつ整数 a、すなわち
ordp(a)=dを満たす整数 a は必ず存在し、
1,2,,p1のなかに φ(d) 個ある。

[証明] 位数 d である数 a が存在すると仮定します。
ordp(a)=d
すなわち a のべきをつくっていくと
{a0,a1,a2,,ak,,ad1,ad}
となって ad のときに初めて 1 と合同になります。ところが
(1){a0,a1,a2,,ak,,ad1}
もすべて d 乗すると
(ak)d=(ad)k1(modp)
となるので、これらは位数 d の候補です (d が 1 と合同になる最小のべき指数とは限りません)。もちろん仮定によって a の位数は d ですが、他にもあるかもしれないということです。また (1) は定理 E2より法 p に関して互いに合同ではありません。さらに (1) は合同方程式
xd1(modp)
の根となっています。この合同方程式の解の個数は d 個を超えないので、(1) 以外に d 乗して 1 と合同になる数はありません。(1) の各要素の位数は定理 E4 より、
ordp(ak)=ordp(a)(ordp(a),k)=d(d,k)
なので、位数が d となるのは
(d,k)=1
を満たす k に対応する ak だけです。
(d,1),(d,2),,(d,d1)
の中から 1 となるものだけを抜き出すので、その個数はオイラーの関数を用いて φ(d) で表されます。ここまでの議論で
ordp(a)=d
を満たす a があると仮定してきましたが、もしかすると存在しないかもしれません。そこで p を法として位数 d である数の個数を ψ(d) とすると、

ψ(d)=φ(d) または ψ(d)=0

のどちらかです。これは p1 の約数を d1,d2,d3, とすれば、たとえば
ψ(d1)=φ(d2)ψ(d2)=0ψ(d3)=φ(d3)
のように、約数によって、その約数に等しい位数があったりなかったりするかもしれないということです。しかし ordp(a)|p1 より、1 から p1 までの数はそれぞれが p1 の約数のうちいずれかを位数とするので、
d|p1ψ(d)=p1
が成り立っているはずです。またオイラーの関数についても
d|p1φ(d)=p1
が成り立ちます。もしある d について ψ(d)=0 であれば
d|p1ψ(d)<d|p1φ(d)
となってしまうので不合理です。よって任意の正の約数 d に等しい位数をもつ整数 a は必ず存在し、その個数は φ(d) です。(証明終)

【次の記事】≫ 素数の原始根

エクセルや数学に関するコメントをお寄せください