有限体

本稿では符号理論の基礎概念である有限体について解説する。

関連ページ

目次

有限体の構成方法

体の定義

(可換体, field)とは、加算・乗算とそれぞれの逆演算(=減算・除算)が定義され、更に分配法則が成り立つような代数的構造(=集合と演算)。

  • 加算 (\(+\))
    • 交換法則が成り立つ: \(a+b=b+a\)
    • 結合法則が成り立つ: \((a+b)+c=a+(b+c)\)
    • 単位元\(0\)が存在: \(a+0=a\)
    • 逆元\(-a\)が存在: \(a+(-a)=0\)
      • したがって減算を定義可能: \(a-b=a+(-b)\)
  • 乗算 (\(\times\))
    • 交換法則が成り立つ: \(a\times b=b\times a\)
    • 結合法則が成り立つ: \((a\times b)\times c=a\times(b\times c)\)
    • 単位元\(1\)が存在: \(a\times1=a\)
    • 0以外に対して逆元\(a^{-1}\)が存在: \(a\times a^{-1}=1\)
      • したがって除算を定義可能: \(\frac{a}{b}=a\times b^{-1}\)
  • 分配法則が成り立つ: \(a\times(b+c)=a\times b+a\times c\)

特に要素数が有限である体を有限体(Finite field, Galois field)と言う。また、有限体の要素数を位数と言う。

素数位数の有限体

位数が素数の有限体を具体的に構成してみよう。

\(p\)を任意の素数とする。
集合\(\mathbb{F}_p:=\{0, 1, 2, \cdots , p-1\}\)に対して\(p\)を法とした加算・乗算を定義する。つまり、\(\mathbb{F}_p\)の加算・乗算の結果は、通常の自然数の加算・乗算の結果を\(p\)で割った余りとなる。
例えば\(p=7\)のとき

\begin{array}{rlcll} 4+5 &=& 9 &=& 2 \\ 4\cdot5 &=& 20 &=& 6 \end{array}

というようになる。

このように構成した集合と演算が体の性質を満たすかどうか確認する。

  • 交換法則・結合法則・単位元・分配法則については自然数で成立することから\(\mathbb{F}_p\)でも成立。
  • 加法の逆元は、\(-a=p-a\in\mathbb{F}_p\)が存在する。
  • 乗法の逆元についてはFermatの小定理より\(a\neq0\)に対して\(a^{p-1}=1\)となることから、\(a^{-1}=a^{p-2}\)が存在する。
Fermatの小定理

素数\(p\)、整数\(a\neq0\)に対して次の式が成り立つ。

\begin{align} a^{p-1} \equiv 1 \pmod p \end{align}

証明

まず\(0^p=0\)が成り立つ。

\(a^p\equiv a\)が成り立つとき、二項定理によって\((a+1)^p\)を展開すると、

\begin{align} (a+1)^p &= a^p + \sum_{k=1}^{p-1}\frac{p!}{(p-k)!k!}a^k + 1 \\ &\equiv a + \sum_{k=1}^{p-1}\frac{p!}{(p-k)!k!}a^k + 1 \end{align}

となる。
二項係数\(\frac{p!}{(p-k)!k!}\)は常に整数。また\(1\leq k\leq p-1\)のとき、分子は\(p\)を因数に持つ一方で、分母は\(p\)を因数に含まない。したがって、二項係数は\(p\)で割り切れる。よって、

\begin{align} (a+1)^p &\equiv a + \sum_{k=1}^{p-1}\frac{p!}{(p-k)!k!}a^k + 1 \\ &\equiv a + 0 + 1 \\ &= a + 1 \\ \end{align}

が成り立つ。

したがって帰納的に全ての\(a\geq0\)に対して\(a^p\equiv a\)が成り立つ。

これはつまり、\(a^p = a+np\)となる整数\(n\)が存在するということなので、

\begin{align} a(a^{p-1}-1) = np \end{align}

となる。
左辺は\(a\)を因数に持つが、右辺は\(p\)が素数なので\(n\)が\(a\)の倍数になっていなければならない。したがって、\(a\neq0\)のとき\(m:=\frac{n}{a}\)は整数。

\begin{align} a^{p-1}-1 = mp \end{align}

となることから、\(a^\equiv1\)が成り立つ。

したがって\(\mathbb{F}_p\)は体の性質を全て満たし、有限体であることがわかる。
(位数\(p\)の有限体を\(\mathrm{GF}(p)\)と表す場合もある)

Fermatの小定理を用いる必要があるので、同様の方法では位数が素数以外の有限体を構成することはできない。

素数冪位数の有限体

別の方法で位数が素数の冪乗\(p^m\)の有限体を構成することもできる。

多項式環

\(\mathbb{F}_p\)係数の多項式の集合(=多項式環)を\(\mathbb{F}_p[x]\)と表す。
つまり、

\begin{align} \mathbb{F}_p[x] = \left\{a_mx^m+a_{m-1}x^{m-1}+\cdots+a_1x+a_0 \middle| m\geq0, a_k\in\mathbb{F}_p\right\} \end{align}

とする。

この集合には多項式としての加算・乗算を定義することができる。(多項式の係数は\(\mathbb{F}_p\)上で演算する)
例えば\(\mathbb{F}_7[x]\)の場合、加算・乗算は

\begin{align} (2x^2+5) + (5x^2+2x+3) &= (2+5)x^2+(0+2)x+(5+3) \\ &= 7x^2+2x+8 \\ &= 0x^2+2x+1 \\ &= 2x+1 \\ \end{align}

\begin{align} (2x^2+5)(5x^2+2x+3) &= 10x^4 + (4+0)x^3 + (6+0+25)x^2 + (10+0)x + 15 \\ &= 10x^4 + 4x^3 + 31x^2 + 10x + 15 \\ &= 3x^4 + 4x^3 + 3x^2 + 3x + 1 \\ \end{align}

となる。

これらの演算の本質は、有限個の\(\mathbb{F}_p\)の要素からなる組(=多項式の係数)同士に定義された演算でしかなく、\(x\)はあくまで形式的な表記であってその実体を考える必要はない。言い換えれば、単に視認しやすいように多項式のような表記で表しているに過ぎない。
このような多項式は形式的冪級数と呼ばれる。

Galois拡大

\(m\)次多項式\(f(x)\in\mathbb{F}_p[x]\)を取り、\(\mathbb{F}_p[x]\)の\(m-1\)次以下の多項式全体による部分集合に\(f(x)\)を法とした加算・乗算を定義したものを、\(\mathbb{F}_p[x]/(f(x))\)と表す。
つまり、\(\mathbb{F}_p[x]/(f(x))\)の加算・乗算の結果は、\(\mathbb{F}_p[x]\)上の加算・乗算の結果を\(f(x)\)で割った余りとなる。

例えば\(\mathbb{F}_7[x]/(x^3+5x^2+3)\)の場合の乗算は、

\begin{align} (2x^2+5)(5x^2+2x+3) &= 3x^4 + 4x^3 + 3x^2 + 3x + 1 \\ &= (3x+3)(x^3+5x^2+3)+2x^2+x+6 \\ &= 2x^2+x+6 \\ \end{align}

となる。(加算については\(2\)次多項式内で閉じているので余りを計算する必要はない)

このように定義された代数的構造はGalois拡大と呼ばれる。
\(\mathbb{F}_p[x]/(f(x))\)には\(\mathbb{F}_p\)係数の全ての\(m-1\)次多項式が含まれるので、要素数(=位数)は\(p^m\)、つまり素数冪となる。

\(\mathbb{F}_p[x]/(f(x))\)が有限体になるかどうか確認する。

  • 交換法則・結合法則・単位元・分配法則については多項式同士・係数\(\mathbb{F}_p\)同士の演算でそれぞれ成立することから\(\mathbb{F}_p[x]/(f(x))\)でも成立。
  • 加法の逆元は、多項式の各係数を\(p\)から引いた
    \(-(a_nx^n+\cdots+a_1x+a_0)=(p-a_n)x^n+\cdots+(p-a_1)x+p-a_0\in\mathbb{F}_p[x]/(f(x))\)
    が存在する。

ここまでの性質(体の性質から乗法の逆元の存在を除いたもの)を満たす代数的構造は可換環と呼ばれる。
可換環\(\mathbb{F}_p[x]/(f(x))\)に乗法の逆元を導入するためには、\(f(x)\)が一定の条件を満たさなければならない。\(\mathbb{F}_p[x]/(f(x))\)が有限体になる条件と、有限体の性質を以下にまとめて紹介する。

\(\mathbb{F}_p[x]/(f(x))\)が有限体になる条件

要素数\(q\)の可換環\(F\)に対して次は全て同値。(ここまでは素数位数の有限体についても成立)

  1. \(F\)が有限体 (=除算を定義できる)
  2. 原始元\(\alpha\in F\backslash\{0\}\)が存在して、かつ\(\alpha^{q-1}=1\)
    (原始元とは任意の\(a\in F\backslash\{0\}\)に対して非負の整数\(n_a\)を用いて\(a=\alpha^{n_a}\)と表せるような\(\alpha\)のこと)
  3. 任意の\(a\in F\backslash\{0\}\)に対して\(a^{q-1}=1\)
  4. 任意の\(a\in F\backslash\{0\}\)に対して\(a^{n_a}=1\)となるような整数\(n_a\geq1\)が存在
    (そのような最小の\(n_a\)を\(a\)の位数と言う。このとき、\(a^n\)は\(n\)を1ずつ増やしていくと\(n_a\)周期で同じ値を繰り返すことになる。有限体の要素数を表す「位数」と同じ言葉だが別の概念なので注意)

更に位数\(q\)の有限体\(\mathbb{F}_q\)に対して\(F=\mathbb{F}_q[x]/(f(x))\)としたとき、次も同値。
(\(f(x)\)の次数を\(m\)とすると、\(q=p^m\))

  1. \(f(x)\)は既約多項式
    (既約多項式とは、1次以上\(m-1\)次以下の多項式\(g(x),h(x)\)の積によって\(f(x)=g(x)h(x)\)と表すことが不可能な1次以上の多項式\(f(x)\)のこと)

なお既約多項式\(f(x)\)に関して、\(y(x):=x\)が\(\mathbb{F}_q[x]/(f(x))\)の原始元になるとき、\(f(x)\)は原始多項式であると言う。

証明

下図のように証明していく。


証明の流れ (点線の方向にも容易に証明することができる)

2⇒3

任意の\(a\in F\)に対して\(a^{q-1}=\left(\alpha^{n_a}\right)^{q-1}=\left(\alpha^{q-1}\right)^{n_a}=1^{n_a}=1\)が成り立つ。

3⇒1

\(a^{-1}:=a^{q-2}\)とすれば、\(a\cdot a^{-1}=a\cdot a^{q-2}=a^{q-1}=1\)が成り立つ。

1⇒4

¬4を仮定する。
つまり、ある\(a\in F\backslash\{0\}\)に対しては\(a^n=1\)となる1以上の\(n\)が存在しないとする。

\(F\)の要素数が有限であることから、\(a^n\)の\(n\)を0から増やしていくとどこかで同じ値が出現しそれ以降ループする。(\(a^n=0\)でループする場合も含めて良い)
つまり、\(a^m=a^n\)となるような\(0\leq m<n\)が共に存在し、それ以降は常に\(a^{m+k}=a^{n+k}\)となる。\(n\)にはそのような最小の自然数を取ることにする。
更に¬4の仮定から\(a^n\neq 1=a^0\)なので、\(m\neq0\)が成り立つ。\(0<m\)なので\(0\leq m-1<n-1\)となるが、\(n\)の最小性より、\(a^{m-1}\neq a^{n-1}\)である。

しかし、1の条件により割り算が可能なので、\(a^{m-1} = a^m/a = a^n/a = a^{n-1}\)となって矛盾。
したがって、¬4の仮定が正しくなかったことがわかる。

4⇒2

\(a\in F\backslash\{0\}\)を任意に取り、\(a\)の位数を\(n_a\)とする。

\(a^m=a^n\)となるような\(m<n<n_a\)が存在すると仮定すると、\(n_a\)より小さい\(n_a-(n-m)>0\)に対して

\begin{align} 1 &= a^{n_a} \\ &= a^{n_a-n}a^n \\ &= a^{n_a-n}a^m \\ &= a^{n_a-(n-m)} \\ \end{align}

となり、位数\(n_a\)の最小性に矛盾する。
よって\(0\leq n<n_a\)において\(a^n\)は全て異なる値を取る。つまり、\(\{a^n|0\leq n\} = \{a^n|0\leq n<n_a\}\)の要素数は\(n_a\)である。

3⇒1の証明と同様に、4⇒1も成立する。したがって\(F\)は(有限)体。
後述の補題1より、体\(F\)において\(y^{n_a}-1=0\)となるような\(y\in F\)は高々\(n_a\)個しか存在しない。
一方、\(\{a^n|0\leq n\}\)の\(n_a\)個の要素は全て\(y^{n_a}=1\)を満たす。
したがって集合の大きさが一致するので、\(\{a^n|0\leq n\}=\{y|y^{n_a}=1\}\)となる。

\(\{a^n|0\leq n\} = F\backslash\{0\}\)のときは\(a\)が原始元となるので直ちに2が成立。
\(\{a^n|0\leq n\} \neq F\backslash\{0\}\)のときを考える。

\(b\in F\backslash\left(\{0\}\cup\{a^n|0\leq n\}\right)\)を取り、その位数を\(n_b\)とする。
\(\{a^n|0\leq n\}=\{y|y^{n_a}=1\}\)なので、\(b^{n_a}\neq1\)が成立する。ここで\(n_b\)が\(n_a\)を割り切ると仮定すると、\(b^{n_a}=\left(b^{n_b}\right)^{n_a/n_b}=1^{n_a/n_b}=1\)となって矛盾するので、\(n_b\)は\(n_a\)を割り切らないことがわかる。

\(n_a\)と\(n_b\)が互いに素のとき、\(c:=ab\)としてその位数を\(n_c\)とする。

  • \(c^{n_an_b}=\left(a^{n_a}\right)^{n_b}\left(b^{n_b}\right)^{n_a}=1^{n_b}1^{n_a}=1\cdot1=1\)なので、\(n_an_b\)は\(n_c\)で割り切れる。
  • \(a^{n_bn_c}=a^{n_bn_c}b^{n_bn_c}=(ab)^{n_cn_b}=1^{n_b}=1\)なので、\(n_bn_c\)は\(n_a\)で割り切れる。\(n_a\)と\(n_b\)は互いに素なので、\(n_c\)は\(n_a\)で割り切れる。
    同様に\(n_c\)は\(n_b\)で割り切れる。

これらより、\(n_c=n_an_b\)となり、\(n_a\)より位数の大きい要素\(c=ab\)が存在することがわかる。

\(n_a\)と\(n_b\)が互いに素ではないとき、\(n_a\)と\(n_b\)をそれぞれ素因数分解して\(n_a=\prod_ip_i^{a_i}, n_b=\prod_ip_i^{b_i}\)とする。
また、これらを用いて新たに\(n_a':=\prod_{a_i\geq b_i}p_i^{a_i}, n_b'=\prod_{a_i<b_i}p_i^{b_i}\)という自然数を定義する。\(n_a'\)は\(n_a\)を、\(n_b'\)は\(n_b\)を割り切る。また、\(n_a'\)と\(n_b'\)は互いに素。
\(a\)の位数は\(n_a\)なので、\(a':=a^{n_a/n_a'}\)の位数は\(n_a'\)である。同様に\(b':=a^{n_b/n_b'}\)の位数は\(n_b'\)である。
したがって\(n_a\)と\(n_b\)が互いに素のときと同様に、\(c:=a'b'\)の位数は\(n_c:=n_a'n_b'\)となる。\(n_c\)は\(n_a\)と\(n_b\)の最小公倍数で、更に\(n_b\)は\(n_a\)を割り切らないので、\(n_c>n_a\)となる。

よっていずれの場合も\(n_a\)より大きい位数の要素\(c\)を新たに得ることができる。
\(c\)を改めて\(a\)と置けば、\(\{a^n|0\leq n\}\neq F\backslash\{0\}\)となる限りこの手順を繰り返すことができ、位数は増大し続ける。位数には上限があるので、最終的に\(\{a^n|0\leq n\}=F\backslash\{0\}\)となるような\(a\)が得られることで手順の繰り返しが止まる。このようにして得られた最終的な\(a\)は\(F\)の原始元となる。

また、\(\{a^n|0\leq n\}=F\backslash\{0\}\)のそれぞれの要素数を取ると、\(n_a=q-1\)となり原始元の位数が\(q-1\)であることもわかる。

2⇒5

まず、常に\(\alpha^n\neq0\)となることを示す。
原始元の性質より、\(F\backslash\{0\}\subset\{\alpha^n|0\leq n\}\)。また\(q-1\leq n\)のとき\(\alpha^n=\alpha^{n-(q-1)}\alpha^{q-1}=\alpha^{n-(q-1)}\)なので、\(\{\alpha^n|0\leq n\}=\{\alpha^n|0\leq n\leq q-2\}\)という包含関係が成り立つ。したがって、\(F\backslash\{0\}\subset\{\alpha^n|0\leq n\leq q-2\}\)となるが、左右の要素の個数はどちらも\(q-1\)なので集合は一致する。
よって常に\(\alpha^n\neq0\)となる。

¬5を仮定する。つまり、1次以上\(m-1\)次以下の多項式\(g(x), h(x)\)を用いて\(f(x)=g(x)h(x)\)と表される。(このことを「\(f(x)\)は可約である」と言う)
\(g,h\)は\(F\backslash\{0\}\)の要素でもあるので、2の条件から\(g=\alpha^{n_g}, h=\alpha^{n_h}\)と表すことができる。\(F=F_q[x]/(f(x))\)上の演算は\(f(x)\)で割った余りが結果になるので、\(\alpha^{n_g+n_h} = \alpha^{n_g}\alpha^{n_h} = gh = f = 0\)となるが、これは最初に示した\(\alpha^n\neq0\)という事実に矛盾する。
したがって、¬5の仮定が正しくなかったことがわかる。

5⇒4

1⇒4の証明と同様に¬4を仮定すると、ある\(a\in F\backslash\{0\}\)に対して、\(a^m=a^n\)かつ\(a^{m-1}\neq a^{n-1}\)となるような\(1\leq m<n\)が存在する。

したがって、

\begin{align} 0 &\equiv a^n-a^m \pmod {f(x)} \\ &= a\left(a^{n-1}-a^{m-1}\right)\\ \end{align}

となる。

\(f(x)\)は既約なので、\(f\)と\(a^{n-1}-a^{m-1}\)の最小公倍数は\(1\)となる。したがって、後述の補題2より

\begin{align} 1 = sf + t(a^{n-1}-a^{m-1}) \end{align}

となるような多項式\(s, t\)が存在する。両辺に\(a\)を掛けると、

\begin{align} a &= saf + ta(a^{n-1}-a^{m-1}) \\ &\equiv sa\times 0 + t\times0 \pmod {f(x)} \\ &= 0 \end{align}

となり、\(a\in F\backslash\{0\}\)と選んだことと矛盾する。よって、¬4の仮定が正しくなかったことがわかる。

補題1

体\(F\)値の\(n\)次多項式\(f(y)\)について、(=\(f(y)=0\)を満たす解\(y\))の個数は高々\(n\)個。

証明

\(f(y)=0\)に\(n+1\)個の異なる解\(\{y_k\}_{k=0}^n\)が存在すると仮定する。

\(f_n(y):=f(y)\)とする。このとき、\(f_n(y\))は\(n\)次多項式であり、\(\{y_k\}_{k=0}^n\)は\(f_n(y)\)の根となる。
\(f_n(y)\)を\(y-y_n\)で割ると、\(n-1\)次多項式\(f_{n-1}(y)\)と定数\(h\)によって

\begin{align} f_n(y) = f_{n-1}(y)(y-y_n) + h \end{align}

と表すことができる。ここで、\(y\)に\(y_n\)を代入すると\(0=f_n(y_n)=0+h=h\)となるので、

\begin{align} f_n(y) = f_{n-1}(y)(y-y_n) \end{align}

となる。
\(\{y_k\}_{k=0}^n\)は互いに異なる値なので、任意の\(0\leq k\leq n-1\)に対して\(y_k-y_n\neq0\)が成り立つ。したがって、上の式に\(y=y_k\)を代入して両辺を\(y-y_n\)で割ることで

\begin{align} f_{n-1}(y_k) &= \frac{f_n(y_k)}{y_k-y_n} \\ &= \frac{0}{y_k-y_n} \\ &= 0 \end{align}

となり、\(\{y_k\}_{k=0}^{n-1}\)は\(n-1\)次方程式\(f_{n-1}(y)\)の根になることがわかる。

これを繰り返すことで、0次多項式(つまり定数)\(f_0(y)=a\neq0\)を用いて

\begin{align} f(y) &= f_n(y) \\ &= f_{n-1}(y)(y-y_n) \\ &\:\; \vdots \\ &= f_0(y)(y-y_n)(y-y_{n-1})\cdots(y-y_1) \\ &= a(y-y_n)(y-y_{n-1})\cdots(y-y_1) \\ \end{align}

と表すことができる。
\(y=y_0\)を代入すると、

\begin{align} 0 &= f(y_0) \\ &= a(y_0-y_n)(y_0-y_{n-1})\cdots(y_0-y_1) \\ \end{align}

となり、更に両辺を\((y_0-y_n)(y_0-y_{n-1})\cdots(y_0-y_1)\)で割ると\(a=0\)となって矛盾。
したがって\(f(y)=0\)に\(n+1\)個の異なる解\(\{y_k\}_{k=0}^n\)が存在するという仮定が間違っていたことがわかる。

補題2 (Bézoutの等式)

有限体\(F_q\)と既約多項式\(f(x)\)に対して\(F=F_q[x]/(f(x))\)とする。
多項式\(a, b\in F\)を取り、\(a, b\)の最大公約数(=\(a,b\)を共に割り切る最大次数の多項式)を\(c\)とする。このとき、

\begin{align} sa+tb=c \end{align}

を満たす多項式\(s, t\in F\)が存在する。

証明

公約数を求める

\(a, b\)の内、次数が大きい方を\(r_0\)、次数が小さい方を\(r_1\)とする。

\(r_0\)を\(r_1\)で割ると、次の関係を満たすように\(r_1\)より低次数の多項式\(r_2\)を取ることができる。
(ただし\(r_1\)が0以外の定数のときは\(r_2=0\))

\begin{align} r_0 = q_2r_1 + r_2 \end{align}

\(r_2\neq 0\)のとき、\(r_1\)を\(r_2\)で割ると、次の関係を満たすように\(r_2\)より低次数の多項式\(r_3\)を取ることができる。
(ただし\(r_2\)が0以外の定数のときは\(r_3=0\))

\begin{align} r_1 = q_3r_2 + r_3 \end{align}

これを繰り返すことで\(r_k\)の次数は減少し続け、いつか\(r_{n+1}=0\)となるような\(n\)に行き着く。(このような手法をEuclidの互除法と言う)

\begin{align} r_0 &= q_2r_1 + r_2 \\ r_1 &= q_3r_2 + r_3 \\ r_2 &= q_4r_3 + r_4 \\ &\:\;\vdots \\ r_{n-3} &= q_{n-1}r_{n-2} + r_{n-1} \\ r_{n-2} &= q_nr_{n-1} + r_n \\ r_{n-1} &= q_{n+1}r_n + r_{n+1} \\ &= q_{n+1}r_n \end{align}

これは、\(r_n\)が\(r_{n-1}\)を割り切ることを意味する。
また、一つ前の式に遡ると、

\begin{align} r_{n-2} &= q_nr_{n-1} + r_n \\ &= q_nq_{n+1}r_n + r_n \\ &= (q_nq_{n+1} + 1)r_n \\ \end{align}

となるので、\(r_{n-2}\)も\(r_n\)で割り切れることがわかる。
これを繰り返すことで、全ての\(r_k\)は\(r_n\)で割り切れることがわかる。したがって、\(r_n\)は\(a,b\)の公約数となる。

目的の式を構築する

再びEuclidの互除法の式を下から見てみよう。

\(s_n=1, s_{n-1}=-q_n\)とすると、\(r_{n-2} = q_nr_{n-1} + r_n\)という式は次のように表すこともできる。

\begin{align} s_nr_{n-2} &= -s_{n-1}r_{n-1} + r_n \end{align}

また、

\begin{align} r_{n-3} &= q_{n-1}r_{n-2} + r_{n-1} \\ s_nr_{n-2} &= -s_{n-1}r_{n-1} + r_n \end{align}

から\(r_{n-1}\)を消去すると、

\begin{align} s_{n-1}r_{n-3} &= -(s_n-s_{n-1}q_{n-1})r_{n-2} + r_n \\ &=: -s_{n-2}r_{n-2} + r_n \end{align}

と表すことができる。(ただし、\(s_{n-2}:=s_n-s_{n-1}q_{n-1}\)とした)

これを繰り返すことで、

\begin{align} s_2r_0 &= -s_1r_1 + r_n \end{align}

となるような\(s_2, s_1\)が存在することがわかる。\(s:=s_2, t:=s_1, c:=r_n\)とすることで、

\begin{align} sa + tb = c \end{align}

となる。

\(c\)が最大公約数であることを示す

\(a,b\)の公約数\(d\)を任意に取る。つまり、\(a=q_ad, b=q_bd\)となるような\(q_a, q_b\)が存在する。
このとき、

\begin{align} c &= sa + tb \\ &= (sq_a + tq_b)d \end{align}

となって、\(d\)は\(c\)を割り切る。
よって、どんな\(d\)に対しても\(c\)の次数は\(d\)の次数以上になるので、\(c\)は最大公約数である。

したがって、\(f(x)\)が\(\mathbb{F}_p[x]\)上の既約多項式ならば、\(F=\mathbb{F}_p[x]/(f(x))\)は有限体となる。
このときの\(F\)の位数は\(p^m\)なので、\(\mathbb{F}_p[x]/(f(x)) = \mathbb{F}_{p^m}\)と表す。(あるいは\(\mathrm{GF}(p^m)\)と表す)

素数冪以外の位数の有限体

素数冪以外、つまり複数の異なる素数の合成数となるような位数の有限体は存在しない。

素数冪以外の位数の有限体は存在しない

有限体\(F\)に対して素数\(p\)と自然数\(n\)が存在して、\(F\)の位数は\(p^n\)となる。

証明

標数の基本的な性質

\(u\in F\)を\(s\)回足す演算を\(s\#u\)と表す。このとき

\begin{align} (s+t)\#u &= s\#u + t\#u \\ s\#(u+v) &= s\#u + s\#v \\ (st)\#u &= s\#(t\#u) \\ 1\#u &= u \end{align}

が成り立つ。(これは線形空間のスカラー倍が満たすべき要件である)
また、\(F\)は有限体なので

\begin{align} (s\#u)\cdot(t\#v)=(st)\#(u\cdot v) \end{align}

という関係も成り立つ。(\(\cdot\)は\(F\)で定義された乗算)

\(F\)の要素数は有限なので、\(1\in F\)に対して\(s\#1=0\)となるような正の整数\(s\)が存在する。そのような最小の\(s\)を\(F\)の標数と言う。

\(s\)が\(F\)の標数であるとき、1以外の任意の\(u\in F\backslash\{0,1\}\)に対しても、

\begin{align} s\#u &= s\#(1\cdot u) \\ &= (s\#1)\cdot u \\ &= 0\cdot u \\ &= 0 \\ \end{align}

が成り立つ。
また逆に、\(t<s\)に対して\(t\#u=0\)となると仮定すると、

\begin{align} 0 &= 0\cdot u^{-1} \\ &= (t\#u)\cdot u^{-1} \\ &= (t\#1)\cdot u\cdot u^{-1} \\ &= t\#1 \\ \end{align}

となって\(s\)の最小性に矛盾する。
したがって、標数\(s\)は任意の\(u\in F\backslash\{0\}\)に対しても\(s\#u=0\)となる最小の自然数であると言える。

\(F\)の標数は素数

標数\(s\)が合成数\(s=ab\)であると仮定すると、

\begin{align} 0 &= (ab)\#1 \\ &= (ab)\#(1\cdot1) \\ &= (a\#1)\cdot(b\#1) \end{align}

となるが、\(s\)の最小性より\(a\#1\)も\(b\#1\)も0とはならないので上の式は矛盾している。
したがって\(s\)は素数あるいは1である。(ただし標数1の体は要素が\(\{0\}\)しかない自明な体となり、考察する意味がほとんどないのでここでは\(s\)は素数とする)

\(F\)の位数は素数冪

\(s\)は素数なので、\(\mathbb{F}_s=\{0, 1, 2, \cdots, s-1\}\)は有限体である。
\(F\)の\(\mathbb{F}_s\)上のスカラー倍を上記の\(\#\)演算によって定めると、\(F\)は線形空間の要件を満たす。

\(F\)は有限の線形空間なので有限個の基底\(\{e_i\}_{i=1}^n\)が存在し、それぞれの基底の係数は\(\mathbb{F}_s\)値なので\(s\)個の値を取る。
したがって、\(F\)の位数は\(s^n\)となり、これは素数冪である。(\(n=1\)のときは素数)

素数位数の有限体

\(p=2, 3, 5, 7, 11, 13\)のときの\(\mathbb{F}_p\)の例を見てみよう。

p=2

\(p=2\)の場合\(\mathbb{F}_p=\{0, 1\}\)であり、演算は次のように定めれば良い。

\begin{align} 0 + 0 &= 0 \\ 0 + 1 &= 1 \\ 1 + 1 &= 0 \end{align}

\begin{align} 0 - 0 &= 0 \\ 0 - 1 &= 1 \\ 1 - 0 &= 1 \\ 1 - 1 &= 0 \end{align}

\begin{align} 0 \times 0 &= 0 \\ 0 \times 1 &= 0 \\ 1 \times 1 &= 1 \end{align}

\begin{align} 0 / 1 &= 0 \\ 1 / 1 &= 1 \end{align}

式を見ると減算と加算は結果が全く同じになっているので、\(\mathbb{F}_2\)では\(a-b=a+b\)と置き換えて良いことがわかる。加算と減算はXOR演算と捉えることもできる。

\(\mathbb{F}_p\backslash\{0\}=\{1\}\)なので、原始元は\(\alpha=1\)。

p=3

\(p=3\)の場合\(\mathbb{F}_p=\{0, 1, 2\}\)である。各要素の冪乗を下の表に示す。
原始元は\(\alpha=2\)。(表内の黄色の行)

\(a^0\)\(a^1\)\(a^2\)
100
111
121

p=5

原始元は\(\alpha=2,3\)。

\(a^0\)\(a^1\)\(a^2\)\(a^3\)\(a^4\)
10000
11111
12431
13421
14141

p=7

原始元は\(\alpha=3,5\)。

\(a^0\)\(a^1\)\(a^2\)\(a^3\)\(a^4\)\(a^5\)\(a^6\)
1000000
1111111
1241241
1326451
1421421
1546231
1616161

p=11

原始元は\(\alpha=2,6,7,8\)。

\(a^0\)\(a^1\)\(a^2\)\(a^3\)\(a^4\)\(a^5\)\(a^6\)\(a^7\)\(a^8\)\(a^9\)\(a^{10}\)
10000000000
11111111111
124851097361
13954139541
14593145931
15349153491
163791058421
175231046981
189641032571
19435194351
1101101101101101

p=13

原始元は\(\alpha=2,6,7,11\)。

\(a^0\)\(a^1\)\(a^2\)\(a^3\)\(a^4\)\(a^5\)\(a^6\)\(a^7\)\(a^8\)\(a^9\)\(a^{10}\)\(a^{11}\)\(a^{12}\)
1000000000000
1111111111111
1248361211951071
1391391391391
14312910143129101
1512815128151281
1610892127354111
1710591112638421
1812518125181251
1931931931931
11091234110912341
1114537122981061
1121121121121121121

素数冪位数の有限体

既約多項式

\(\mathbb{F}_{p^m}\)の例を見る前に、まずは既約多項式について調べる。
ある多項式が既約であるかどうかは、より低次の既知の既約多項式全てで割ってみることで判定することができる。

\(\mathbb{F}_2[x]\)の11次までの既約多項式を次の表に掲載する。
表内では係数を並べることで多項式を表現する。例えば\(x^4+x^3+1\)は\(x^4, x^3, x^2, x, 1\)の係数がそれぞれ\(1,1,0,0,1\)なので2進表記は11001となる。
既約多項式の中で更に原始多項式となるものは黄色の背景で表す。

次数既約多項式
110
11
2111
31011
1101
410011
11001
11111
5100101
101001
101111
110111
111011
111101
61000011
1001001
1010111
1011011
1100001
1100111
1101101
1110011
1110101
710000011
10001001
10001111
10010001
10011101
10100111
10101011
10111001
10111111
11000001
11001011
11010011
11010101
11100101
11101111
11110001
11110111
11111101
8100011011
100011101
100101011
100101101
100111001
100111111
101001101
101011111
101100011
101100101
101101001
101110001
101110111
101111011
110000111
110001011
110001101
110011111
110100011
110101001
110110001
110111101
111000011
111001111
111010111
111011101
111100111
111110011
111110101
111111001
91000000011
1000010001
1000010111
1000011011
1000100001
1000101101
1000110011
1001001011
1001011001
1001011111
1001100101
1001101001
1001101111
1001110111
1001111101
1010000111
1010010101
1010011001
1010100011
1010100101
1010101111
1010110111
1010111101
1011001111
1011010001
1011011011
1011110101
1011111001
1100000001
1100010011
1100010101
1100011111
1100100011
1100110001
1100111011
1101001001
1101001111
1101011011
1101100001
1101101011
1101101101
1101110011
1101111111
1110000101
1110001111
1110100001
1110110101
1110111001
1111000111
1111001011
1111001101
1111010101
1111011001
1111100011
1111101001
1111111011
1010000001001
10000001111
10000011011
10000011101
10000100111
10000101101
10000110101
10001000111
10001010011
10001100011
10001100101
10001101111
10010000001
10010001011
10010011001
10010101001
10010101111
10011000101
10011001001
10011010111
10011100111
10011101101
10011110011
10011111111
10100001011
10100001101
10100011001
10100011111
10100100011
10100110001
10100111101
10101000011
10101010111
10101100001
10101100111
10101101011
10110000101
10110001111
10110010111
10110011011
10110100001
10110101011
10110111001
10111000001
10111000111
10111100101
10111110111
10111111011
11000010011
11000010101
11000100011
11000100101
11000110001
11000110111
11001000011
11001001111
11001010001
11001011011
11001111001
11001111111
11010000101
11010001001
11010100111
11010101101
11010110101
11010111111
11011000001
11011001101
11011010011
11011011111
11011110111
11011111101
11100001111
11100010001
11100010111
11100011101
11100100001
11100101011
11100110101
11100111001
11101000111
11101001101
11101010101
11101011001
11101100011
11101111011
11101111101
11110000001
11110000111
11110001101
11110010011
11110101001
11110110001
11111000101
11111011011
11111101011
11111110011
11111111001
11111111111
11100000000101
100000010111
100000101011
100000101101
100001000111
100001100011
100001100101
100001110001
100001111011
100010001101
100010010101
100010011111
100010101001
100010110001
100011000011
100011001111
100011010001
100011100001
100011100111
100011101011
100011110101
100100001101
100100010011
100100100101
100100101001
100100110111
100100111011
100100111101
100101000101
100101001001
100101010001
100101011011
100101110011
100101110101
100101111111
100110000011
100110001111
100110101011
100110101101
100110111001
100111000111
100111011001
100111100101
100111101111
100111110111
101000000001
101000000111
101000010011
101000010101
101000101001
101001001001
101001100001
101001101101
101001111001
101001111111
101010000101
101010010001
101010011101
101010100111
101010101011
101010110011
101010110101
101011010101
101011011111
101011100011
101011101001
101011101111
101011110001
101011111011
101100000011
101100001001
101100010001
101100110011
101100111111
101101000001
101101001011
101101011001
101101011111
101101100101
101101101111
101101111101
101110000111
101110001011
101110010011
101110010101
101110101111
101110110111
101110111101
101111001001
101111011011
101111011101
101111100111
101111101101
110000001011
110000001101
110000011001
110000011111
110000110001
110001010111
110001100001
110001101011
110001110011
110001110101
110010000101
110010001001
110010010111
110010011011
110010011101
110010110011
110010111111
110011000111
110011001101
110011010011
110011010101
110011100011
110011101001
110011110111
110100000011
110100001111
110100011101
110100100111
110100101101
110101000001
110101000111
110101010101
110101011001
110101100011
110101101111
110101110001
110110010011
110110011111
110110101001
110110111011
110110111101
110111001001
110111010111
110111011011
110111100001
110111100111
110111110101
110111111111
111000000101
111000011101
111000100001
111000100111
111000101011
111000110011
111000111001
111001000111
111001001011
111001010101
111001011111
111001110001
111001111011
111001111101
111010000001
111010010011
111010011111
111010100011
111010111011
111011001001
111011001111
111011011101
111011110011
111011111001
111100001011
111100011001
111100110001
111100110111
111101011101
111101101011
111101101101
111101110101
111101111001
111110000011
111110010001
111110010111
111110011011
111110100111
111110101101
111110110101
111111001101
111111010011
111111100101
111111101001
111111111011

(この表を作るために使ったJSコードはこちら)

\(f(x)=x^8+x^4+x^3+x^2+1\)

8次の既約多項式\(f(x)=x^8+x^4+x^3+x^2+1\)(2進表記で100011101)を選び、\(\mathbb{F}_{2^8}=\mathbb{F}_2[x]/(f(x))\)とした場合の例を見てみよう。

下の表で確かめられるように、この例では\(y = \alpha(x) := x = \) 00000010が原始元となる。
全ての\(y\in\mathbb{F}_{2^8}\)は8桁の2進数で表記することができるが、その値を10進数に変換することで0から255までの値と対応付けることができる。

\(y\)\(y^{-1}\)
10進表記2進表記冪乗表記10進表記2進表記冪乗表記
000000000
100000001\(\alpha^{0}\)100000001\(\alpha^{0}\)
200000010\(\alpha^{1}\)14210001110\(\alpha^{254}\)
300000011\(\alpha^{25}\)24411110100\(\alpha^{230}\)
400000100\(\alpha^{2}\)7101000111\(\alpha^{253}\)
500000101\(\alpha^{50}\)16710100111\(\alpha^{205}\)
600000110\(\alpha^{26}\)12201111010\(\alpha^{229}\)
700000111\(\alpha^{198}\)18610111010\(\alpha^{57}\)
800001000\(\alpha^{3}\)17310101101\(\alpha^{252}\)
900001001\(\alpha^{223}\)15710011101\(\alpha^{32}\)
1000001010\(\alpha^{51}\)22111011101\(\alpha^{204}\)
1100001011\(\alpha^{238}\)15210011000\(\alpha^{17}\)
1200001100\(\alpha^{27}\)6100111101\(\alpha^{228}\)
1300001101\(\alpha^{104}\)17010101010\(\alpha^{151}\)
1400001110\(\alpha^{199}\)9301011101\(\alpha^{56}\)
1500001111\(\alpha^{75}\)15010010110\(\alpha^{180}\)
1600010000\(\alpha^{4}\)21611011000\(\alpha^{251}\)
1700010001\(\alpha^{100}\)11401110010\(\alpha^{155}\)
1800010010\(\alpha^{224}\)19211000000\(\alpha^{31}\)
1900010011\(\alpha^{14}\)8801011000\(\alpha^{241}\)
2000010100\(\alpha^{52}\)22411100000\(\alpha^{203}\)
2100010101\(\alpha^{141}\)6200111110\(\alpha^{114}\)
2200010110\(\alpha^{239}\)7601001100\(\alpha^{16}\)
2300010111\(\alpha^{129}\)10201100110\(\alpha^{126}\)
2400011000\(\alpha^{28}\)14410010000\(\alpha^{227}\)
2500011001\(\alpha^{193}\)22211011110\(\alpha^{62}\)
2600011010\(\alpha^{105}\)8501010101\(\alpha^{150}\)
2700011011\(\alpha^{248}\)12810000000\(\alpha^{7}\)
2800011100\(\alpha^{200}\)16010100000\(\alpha^{55}\)
2900011101\(\alpha^{8}\)13110000011\(\alpha^{247}\)
3000011110\(\alpha^{76}\)7501001011\(\alpha^{179}\)
3100011111\(\alpha^{113}\)4200101010\(\alpha^{142}\)
3200100000\(\alpha^{5}\)10801101100\(\alpha^{250}\)
3300100001\(\alpha^{138}\)23711101101\(\alpha^{117}\)
3400100010\(\alpha^{101}\)5700111001\(\alpha^{154}\)
3500100011\(\alpha^{47}\)8101010001\(\alpha^{208}\)
3600100100\(\alpha^{225}\)9601100000\(\alpha^{30}\)
3700100101\(\alpha^{36}\)8601010110\(\alpha^{219}\)
3800100110\(\alpha^{15}\)4400101100\(\alpha^{240}\)
3900100111\(\alpha^{33}\)13810001010\(\alpha^{222}\)
4000101000\(\alpha^{53}\)11201110000\(\alpha^{202}\)
4100101001\(\alpha^{147}\)20811010000\(\alpha^{108}\)
4200101010\(\alpha^{142}\)3100011111\(\alpha^{113}\)
4300101011\(\alpha^{218}\)7401001010\(\alpha^{37}\)
4400101100\(\alpha^{240}\)3800100110\(\alpha^{15}\)
4500101101\(\alpha^{18}\)13910001011\(\alpha^{237}\)
4600101110\(\alpha^{130}\)5100110011\(\alpha^{125}\)
4700101111\(\alpha^{69}\)11001101110\(\alpha^{186}\)
4800110000\(\alpha^{29}\)7201001000\(\alpha^{226}\)
4900110001\(\alpha^{181}\)13710001001\(\alpha^{74}\)
5000110010\(\alpha^{194}\)11101101111\(\alpha^{61}\)
5100110011\(\alpha^{125}\)4600101110\(\alpha^{130}\)
5200110100\(\alpha^{106}\)16410100100\(\alpha^{149}\)
5300110101\(\alpha^{39}\)19511000011\(\alpha^{216}\)
5400110110\(\alpha^{249}\)6401000000\(\alpha^{6}\)
5500110111\(\alpha^{185}\)9401011110\(\alpha^{70}\)
5600111000\(\alpha^{201}\)8001010000\(\alpha^{54}\)
5700111001\(\alpha^{154}\)3400100010\(\alpha^{101}\)
5800111010\(\alpha^{9}\)20711001111\(\alpha^{246}\)
5900111011\(\alpha^{120}\)16910101001\(\alpha^{135}\)
6000111100\(\alpha^{77}\)17110101011\(\alpha^{178}\)
6100111101\(\alpha^{228}\)1200001100\(\alpha^{27}\)
6200111110\(\alpha^{114}\)2100010101\(\alpha^{141}\)
6300111111\(\alpha^{166}\)22511100001\(\alpha^{89}\)
6401000000\(\alpha^{6}\)5400110110\(\alpha^{249}\)
6501000001\(\alpha^{191}\)9501011111\(\alpha^{64}\)
6601000010\(\alpha^{139}\)24811111000\(\alpha^{116}\)
6701000011\(\alpha^{98}\)21311010101\(\alpha^{157}\)
6801000100\(\alpha^{102}\)14610010010\(\alpha^{153}\)
6901000101\(\alpha^{221}\)7801001110\(\alpha^{34}\)
7001000110\(\alpha^{48}\)16610100110\(\alpha^{207}\)
7101000111\(\alpha^{253}\)400000100\(\alpha^{2}\)
7201001000\(\alpha^{226}\)4800110000\(\alpha^{29}\)
7301001001\(\alpha^{152}\)13610001000\(\alpha^{103}\)
7401001010\(\alpha^{37}\)4300101011\(\alpha^{218}\)
7501001011\(\alpha^{179}\)3000011110\(\alpha^{76}\)
7601001100\(\alpha^{16}\)2200010110\(\alpha^{239}\)
7701001101\(\alpha^{145}\)10301100111\(\alpha^{110}\)
7801001110\(\alpha^{34}\)6901000101\(\alpha^{221}\)
7901001111\(\alpha^{136}\)14710010011\(\alpha^{119}\)
8001010000\(\alpha^{54}\)5600111000\(\alpha^{201}\)
8101010001\(\alpha^{208}\)3500100011\(\alpha^{47}\)
8201010010\(\alpha^{148}\)10401101000\(\alpha^{107}\)
8301010011\(\alpha^{206}\)14010001100\(\alpha^{49}\)
8401010100\(\alpha^{143}\)12910000001\(\alpha^{112}\)
8501010101\(\alpha^{150}\)2600011010\(\alpha^{105}\)
8601010110\(\alpha^{219}\)3700100101\(\alpha^{36}\)
8701010111\(\alpha^{189}\)9701100001\(\alpha^{66}\)
8801011000\(\alpha^{241}\)1900010011\(\alpha^{14}\)
8901011001\(\alpha^{210}\)19311000001\(\alpha^{45}\)
9001011010\(\alpha^{19}\)20311001011\(\alpha^{236}\)
9101011011\(\alpha^{92}\)9901100011\(\alpha^{163}\)
9201011100\(\alpha^{131}\)15110010111\(\alpha^{124}\)
9301011101\(\alpha^{56}\)1400001110\(\alpha^{199}\)
9401011110\(\alpha^{70}\)5500110111\(\alpha^{185}\)
9501011111\(\alpha^{64}\)6501000001\(\alpha^{191}\)
9601100000\(\alpha^{30}\)3600100100\(\alpha^{225}\)
9701100001\(\alpha^{66}\)8701010111\(\alpha^{189}\)
9801100010\(\alpha^{182}\)20211001010\(\alpha^{73}\)
9901100011\(\alpha^{163}\)9101011011\(\alpha^{92}\)
10001100100\(\alpha^{195}\)18510111001\(\alpha^{60}\)
10101100101\(\alpha^{72}\)19611000100\(\alpha^{183}\)
10201100110\(\alpha^{126}\)2300010111\(\alpha^{129}\)
10301100111\(\alpha^{110}\)7701001101\(\alpha^{145}\)
10401101000\(\alpha^{107}\)8201010010\(\alpha^{148}\)
10501101001\(\alpha^{58}\)14110001101\(\alpha^{197}\)
10601101010\(\alpha^{40}\)23911101111\(\alpha^{215}\)
10701101011\(\alpha^{84}\)17910110011\(\alpha^{171}\)
10801101100\(\alpha^{250}\)3200100000\(\alpha^{5}\)
10901101101\(\alpha^{133}\)23611101100\(\alpha^{122}\)
11001101110\(\alpha^{186}\)4700101111\(\alpha^{69}\)
11101101111\(\alpha^{61}\)5000110010\(\alpha^{194}\)
11201110000\(\alpha^{202}\)4000101000\(\alpha^{53}\)
11301110001\(\alpha^{94}\)20911010001\(\alpha^{161}\)
11401110010\(\alpha^{155}\)1700010001\(\alpha^{100}\)
11501110011\(\alpha^{159}\)21711011001\(\alpha^{96}\)
11601110100\(\alpha^{10}\)23311101001\(\alpha^{245}\)
11701110101\(\alpha^{21}\)25111111011\(\alpha^{234}\)
11801110110\(\alpha^{121}\)21811011010\(\alpha^{134}\)
11901110111\(\alpha^{43}\)12101111001\(\alpha^{212}\)
12001111000\(\alpha^{78}\)21911011011\(\alpha^{177}\)
12101111001\(\alpha^{212}\)11901110111\(\alpha^{43}\)
12201111010\(\alpha^{229}\)600000110\(\alpha^{26}\)
12301111011\(\alpha^{172}\)18710111011\(\alpha^{83}\)
12401111100\(\alpha^{115}\)13210000100\(\alpha^{140}\)
12501111101\(\alpha^{243}\)20511001101\(\alpha^{12}\)
12601111110\(\alpha^{167}\)25411111110\(\alpha^{88}\)
12701111111\(\alpha^{87}\)25211111100\(\alpha^{168}\)
12810000000\(\alpha^{7}\)2700011011\(\alpha^{248}\)
12910000001\(\alpha^{112}\)8401010100\(\alpha^{143}\)
13010000010\(\alpha^{192}\)16110100001\(\alpha^{63}\)
13110000011\(\alpha^{247}\)2900011101\(\alpha^{8}\)
13210000100\(\alpha^{140}\)12401111100\(\alpha^{115}\)
13310000101\(\alpha^{128}\)20411001100\(\alpha^{127}\)
13410000110\(\alpha^{99}\)22811100100\(\alpha^{156}\)
13510000111\(\alpha^{13}\)17610110000\(\alpha^{242}\)
13610001000\(\alpha^{103}\)7301001001\(\alpha^{152}\)
13710001001\(\alpha^{74}\)4900110001\(\alpha^{181}\)
13810001010\(\alpha^{222}\)3900100111\(\alpha^{33}\)
13910001011\(\alpha^{237}\)4500101101\(\alpha^{18}\)
14010001100\(\alpha^{49}\)8301010011\(\alpha^{206}\)
14110001101\(\alpha^{197}\)10501101001\(\alpha^{58}\)
14210001110\(\alpha^{254}\)200000010\(\alpha^{1}\)
14310001111\(\alpha^{24}\)24511110101\(\alpha^{231}\)
14410010000\(\alpha^{227}\)2400011000\(\alpha^{28}\)
14510010001\(\alpha^{165}\)22311011111\(\alpha^{90}\)
14610010010\(\alpha^{153}\)6801000100\(\alpha^{102}\)
14710010011\(\alpha^{119}\)7901001111\(\alpha^{136}\)
14810010100\(\alpha^{38}\)15510011011\(\alpha^{217}\)
14910010101\(\alpha^{184}\)18810111100\(\alpha^{71}\)
15010010110\(\alpha^{180}\)1500001111\(\alpha^{75}\)
15110010111\(\alpha^{124}\)9201011100\(\alpha^{131}\)
15210011000\(\alpha^{17}\)1100001011\(\alpha^{238}\)
15310011001\(\alpha^{68}\)22011011100\(\alpha^{187}\)
15410011010\(\alpha^{146}\)18910111101\(\alpha^{109}\)
15510011011\(\alpha^{217}\)14810010100\(\alpha^{38}\)
15610011100\(\alpha^{35}\)17210101100\(\alpha^{220}\)
15710011101\(\alpha^{32}\)900001001\(\alpha^{223}\)
15810011110\(\alpha^{137}\)19911000111\(\alpha^{118}\)
15910011111\(\alpha^{46}\)16210100010\(\alpha^{209}\)
16010100000\(\alpha^{55}\)2800011100\(\alpha^{200}\)
16110100001\(\alpha^{63}\)13010000010\(\alpha^{192}\)
16210100010\(\alpha^{209}\)15910011111\(\alpha^{46}\)
16310100011\(\alpha^{91}\)19811000110\(\alpha^{164}\)
16410100100\(\alpha^{149}\)5200110100\(\alpha^{106}\)
16510100101\(\alpha^{188}\)19411000010\(\alpha^{67}\)
16610100110\(\alpha^{207}\)7001000110\(\alpha^{48}\)
16710100111\(\alpha^{205}\)500000101\(\alpha^{50}\)
16810101000\(\alpha^{144}\)20611001110\(\alpha^{111}\)
16910101001\(\alpha^{135}\)5900111011\(\alpha^{120}\)
17010101010\(\alpha^{151}\)1300001101\(\alpha^{104}\)
17110101011\(\alpha^{178}\)6000111100\(\alpha^{77}\)
17210101100\(\alpha^{220}\)15610011100\(\alpha^{35}\)
17310101101\(\alpha^{252}\)800001000\(\alpha^{3}\)
17410101110\(\alpha^{190}\)19010111110\(\alpha^{65}\)
17510101111\(\alpha^{97}\)18310110111\(\alpha^{158}\)
17610110000\(\alpha^{242}\)13510000111\(\alpha^{13}\)
17710110001\(\alpha^{86}\)22911100101\(\alpha^{169}\)
17810110010\(\alpha^{211}\)23811101110\(\alpha^{44}\)
17910110011\(\alpha^{171}\)10701101011\(\alpha^{84}\)
18010110100\(\alpha^{20}\)23511101011\(\alpha^{235}\)
18110110101\(\alpha^{42}\)24211110010\(\alpha^{213}\)
18210110110\(\alpha^{93}\)19110111111\(\alpha^{162}\)
18310110111\(\alpha^{158}\)17510101111\(\alpha^{97}\)
18410111000\(\alpha^{132}\)19711000101\(\alpha^{123}\)
18510111001\(\alpha^{60}\)10001100100\(\alpha^{195}\)
18610111010\(\alpha^{57}\)700000111\(\alpha^{198}\)
18710111011\(\alpha^{83}\)12301111011\(\alpha^{172}\)
18810111100\(\alpha^{71}\)14910010101\(\alpha^{184}\)
18910111101\(\alpha^{109}\)15410011010\(\alpha^{146}\)
19010111110\(\alpha^{65}\)17410101110\(\alpha^{190}\)
19110111111\(\alpha^{162}\)18210110110\(\alpha^{93}\)
19211000000\(\alpha^{31}\)1800010010\(\alpha^{224}\)
19311000001\(\alpha^{45}\)8901011001\(\alpha^{210}\)
19411000010\(\alpha^{67}\)16510100101\(\alpha^{188}\)
19511000011\(\alpha^{216}\)5300110101\(\alpha^{39}\)
19611000100\(\alpha^{183}\)10101100101\(\alpha^{72}\)
19711000101\(\alpha^{123}\)18410111000\(\alpha^{132}\)
19811000110\(\alpha^{164}\)16310100011\(\alpha^{91}\)
19911000111\(\alpha^{118}\)15810011110\(\alpha^{137}\)
20011001000\(\alpha^{196}\)21011010010\(\alpha^{59}\)
20111001001\(\alpha^{23}\)24711110111\(\alpha^{232}\)
20211001010\(\alpha^{73}\)9801100010\(\alpha^{182}\)
20311001011\(\alpha^{236}\)9001011010\(\alpha^{19}\)
20411001100\(\alpha^{127}\)13310000101\(\alpha^{128}\)
20511001101\(\alpha^{12}\)12501111101\(\alpha^{243}\)
20611001110\(\alpha^{111}\)16810101000\(\alpha^{144}\)
20711001111\(\alpha^{246}\)5800111010\(\alpha^{9}\)
20811010000\(\alpha^{108}\)4100101001\(\alpha^{147}\)
20911010001\(\alpha^{161}\)11301110001\(\alpha^{94}\)
21011010010\(\alpha^{59}\)20011001000\(\alpha^{196}\)
21111010011\(\alpha^{82}\)24611110110\(\alpha^{173}\)
21211010100\(\alpha^{41}\)24911111001\(\alpha^{214}\)
21311010101\(\alpha^{157}\)6701000011\(\alpha^{98}\)
21411010110\(\alpha^{85}\)21511010111\(\alpha^{170}\)
21511010111\(\alpha^{170}\)21411010110\(\alpha^{85}\)
21611011000\(\alpha^{251}\)1600010000\(\alpha^{4}\)
21711011001\(\alpha^{96}\)11501110011\(\alpha^{159}\)
21811011010\(\alpha^{134}\)11801110110\(\alpha^{121}\)
21911011011\(\alpha^{177}\)12001111000\(\alpha^{78}\)
22011011100\(\alpha^{187}\)15310011001\(\alpha^{68}\)
22111011101\(\alpha^{204}\)1000001010\(\alpha^{51}\)
22211011110\(\alpha^{62}\)2500011001\(\alpha^{193}\)
22311011111\(\alpha^{90}\)14510010001\(\alpha^{165}\)
22411100000\(\alpha^{203}\)2000010100\(\alpha^{52}\)
22511100001\(\alpha^{89}\)6300111111\(\alpha^{166}\)
22611100010\(\alpha^{95}\)23011100110\(\alpha^{160}\)
22711100011\(\alpha^{176}\)24011110000\(\alpha^{79}\)
22811100100\(\alpha^{156}\)13410000110\(\alpha^{99}\)
22911100101\(\alpha^{169}\)17710110001\(\alpha^{86}\)
23011100110\(\alpha^{160}\)22611100010\(\alpha^{95}\)
23111100111\(\alpha^{81}\)24111110001\(\alpha^{174}\)
23211101000\(\alpha^{11}\)25011111010\(\alpha^{244}\)
23311101001\(\alpha^{245}\)11601110100\(\alpha^{10}\)
23411101010\(\alpha^{22}\)24311110011\(\alpha^{233}\)
23511101011\(\alpha^{235}\)18010110100\(\alpha^{20}\)
23611101100\(\alpha^{122}\)10901101101\(\alpha^{133}\)
23711101101\(\alpha^{117}\)3300100001\(\alpha^{138}\)
23811101110\(\alpha^{44}\)17810110010\(\alpha^{211}\)
23911101111\(\alpha^{215}\)10601101010\(\alpha^{40}\)
24011110000\(\alpha^{79}\)22711100011\(\alpha^{176}\)
24111110001\(\alpha^{174}\)23111100111\(\alpha^{81}\)
24211110010\(\alpha^{213}\)18110110101\(\alpha^{42}\)
24311110011\(\alpha^{233}\)23411101010\(\alpha^{22}\)
24411110100\(\alpha^{230}\)300000011\(\alpha^{25}\)
24511110101\(\alpha^{231}\)14310001111\(\alpha^{24}\)
24611110110\(\alpha^{173}\)21111010011\(\alpha^{82}\)
24711110111\(\alpha^{232}\)20111001001\(\alpha^{23}\)
24811111000\(\alpha^{116}\)6601000010\(\alpha^{139}\)
24911111001\(\alpha^{214}\)21211010100\(\alpha^{41}\)
25011111010\(\alpha^{244}\)23211101000\(\alpha^{11}\)
25111111011\(\alpha^{234}\)11701110101\(\alpha^{21}\)
25211111100\(\alpha^{168}\)12701111111\(\alpha^{87}\)
25311111101\(\alpha^{80}\)25511111111\(\alpha^{175}\)
25411111110\(\alpha^{88}\)12601111110\(\alpha^{167}\)
25511111111\(\alpha^{175}\)25311111101\(\alpha^{80}\)

\(\mathbb{F}_{2^8}\)の加算は各桁を\(\mathbb{F}_2\)の上で加算することで計算される。\(\mathbb{F}_2\)の上の加算はXOR演算と同じなので、\(\mathbb{F}_{2^8}\)の加算は各桁のXOR演算となる。また、この場合も減算と加算は同じ結果になる。

例えば\(91+188\)は次のように計算することができる。(\(91-188\)も全く同じ結果になる)

\begin{align} 91+188 &= \mathrm{0b01011011} + \mathrm{10111100} \\ &= \mathrm{0b11100111} \\ &= 231 \end{align}

\(\mathbb{F}_{2^8}\)の乗算は原始元\(\alpha\)を用いた冪乗表記を経由することで簡単に計算できる。
各\(y\in\mathbb{F}_{2^8}\)に対応する\(\alpha^n\)の指数を予め保持しておくことで、\(y\)と\(n\)を相互に変換することができる。この対応を利用することで、\(y_1\times y_2 = \alpha^{n_1}\times\alpha^{n_2} = \alpha^{n_1+n_2}\)となることから\(n_1+n_2\)に対応する\(y\)を求めれば良い。
除算についても、\(\alpha^{255}=1\)となることから\(y^{-1}=\alpha^{255-n}\)と言えるので、\(y_1/y_2 = y_1\times y_2^{-1}\)を冪乗表記を経由して求めれば良い。

例えば\(91\times188\)は次のように計算することができる。

\begin{align} 91\times188 &= \alpha^{92}\times\alpha^{71} \\ &= \alpha^{163} \\ &= 99 \end{align}

また、\(91/188\)は次のように計算することができる。

\begin{align} 91/188 &= \alpha^{92}\times\alpha^{255-71} \\ &= \alpha^{255+21} \\ &= \alpha^{21} \\ &= 117 \end{align}

参考

有限体に原始元が存在することの証明