ぼんやりと $\mathbb{F}_q$ について思いをはせる。
$\mathbb{F}_q$ の乗法群 $\mathbb{F}_q^\times$ についてpythonでばばっと調べもの。
#! /usr/bin/env python # -*- coding: utf-8 -*- import numpy as np def invertible(q): a = [1] for i in range(2, q): for j in range(2, q): if i * j % q == 1: a.append(i) break return a def show_Fq(q): print "F_{}:".format(q) a = np.array(invertible(q)) b = a print " invertible: {}".format(a) print " x in invertible:" for i in range(2, q+1): b = b * a % q print " x^{} : {}".format(i, b) if np.all(b == 1): break print for q in range(2, 25+1): show_Fq(q)
numpyを使いたいけど、Windows用の64bitビルドpython.exeの場合、numpyをビルドするか非公式ビルドを使う必要があるようだ。これだけのために32bit python.exeを入れるとか、ビルドするとか面倒だし、Ubuntuを起動するのが今日はダルぃので、Web-based online coding environment | paiza.IOを使う。Webの実行環境ってちょっとした時に便利だ!
くっそ長い出力だが結果は以下:
F_2: invertible: [1] x in invertible: x^2 : [1] F_3: invertible: [1 2] x in invertible: x^2 : [1 1] F_4: invertible: [1 3] x in invertible: x^2 : [1 1] F_5: invertible: [1 2 3 4] x in invertible: x^2 : [1 4 4 1] x^3 : [1 3 2 4] x^4 : [1 1 1 1] F_6: invertible: [1 5] x in invertible: x^2 : [1 1] F_7: invertible: [1 2 3 4 5 6] x in invertible: x^2 : [1 4 2 2 4 1] x^3 : [1 1 6 1 6 6] x^4 : [1 2 4 4 2 1] x^5 : [1 4 5 2 3 6] x^6 : [1 1 1 1 1 1] F_8: invertible: [1 3 5 7] x in invertible: x^2 : [1 1 1 1] F_9: invertible: [1 2 4 5 7 8] x in invertible: x^2 : [1 4 7 7 4 1] x^3 : [1 8 1 8 1 8] x^4 : [1 7 4 4 7 1] x^5 : [1 5 7 2 4 8] x^6 : [1 1 1 1 1 1] F_10: invertible: [1 3 7 9] x in invertible: x^2 : [1 9 9 1] x^3 : [1 7 3 9] x^4 : [1 1 1 1] ... F_12: invertible: [ 1 5 7 11] x in invertible: x^2 : [1 1 1 1] ... F_14: invertible: [ 1 3 5 9 11 13] x in invertible: x^2 : [ 1 9 11 11 9 1] x^3 : [ 1 13 13 1 1 13] x^4 : [ 1 11 9 9 11 1] x^5 : [ 1 5 3 11 9 13] x^6 : [1 1 1 1 1 1] ...
$q = p$ : 素数の場合には、$p \!\not|\, a$ なる $a$ に対して $a^{p-1} \equiv 1\ \mathrm{(mod\ p)}$ (Fermatの小定理)なので(まぁ、巡回群だし)、まぁ、そうかなと思う結果だが、素数でない場合もあるところでずらっと1になるんだなぁ。
$q$ の1以外の最小の約数のところで 1 と -1 が並ぶのかなと思ったが、$q=14$ の時がそうなっていないので、そういうわけでもないんだが。奥が深いな。代数は全然ピンと来ないな。
$p_1,\ p_2$ が共に素数の場合、中国の剰余定理によって $\mathbb{Z}/p_1 p_2\mathbb{Z} \simeq \mathbb{Z}/p_1\mathbb{Z} \times \mathbb{Z}/p_2\mathbb{Z}$ だから、$\mathbb{F}_{p_1}$ と $\mathbb{F}_{p_2}$ の状況を見ることで、$q=6, 10, 14$ はまぁ分かるか。$q=4, 8, 9$ あたりはSylowの定理の辺のネタが出てきてしまいそうだ... おぉ、くわばらくわばら...