有限体(ガロア体)上で乗法演算を行う際には、既約多項式が必要となる。既約多項式は、指定された次数において、より小さな次数の多項式の積として因数分解できないものである。
以下に、いくつかの代表的な既約多項式を示す。これらの多項式は GF(2) 上で定義されており、係数はすべて 0 または 1 である。多項式は通常、ビットパターンとして 16 進数で表現されることが多い。例えば、0x13 は多項式 \( x^4 + x + 1 \) を表す。
多項式の可視化には、次のような C++ クラスが利用できる:
#include <iostream>
using namespace std;
using LL = long long;
class Polynomial {
public:
LL coeff;
Polynomial(LL c) : coeff(c) {}
friend ostream& operator<<(ostream& os, const Polynomial& p);
};
ostream& operator<<(ostream& os, const Polynomial& p) {
if (p.coeff == 0) {
return os << "0";
}
bool first = true;
LL val = p.coeff;
for (int deg = 0; val != 0; ++deg, val >>= 1) {
if (val & 1) {
if (!first) os << "+";
first = false;
if (deg == 0)
os << "1";
else if (deg == 1)
os << "x";
else
os << "x^" << deg;
}
}
return os;
}
このクラスにより、整数値(例:0x1D)を多項式形式(例:\( x^4 + x^3 + x^2 + 1 \))として出力できる。
以下は、GF(2) 上での低次の既約多項式の一覧(16進数表記)である:
| 次数 | 既約多項式(16進) | 多項式表現 |
|---|---|---|
| 2 | 0x7 | \(x^2 + x + 1\) |
| 3 | 0xB | \(x^3 + x + 1\) |
| 3 | 0xD | \(x^3 + x^2 + 1\) |
| 4 | 0x13 | \(x^4 + x + 1\) |
| 4 | 0x19 | \(x^4 + x^3 + 1\) |
| 5 | 0x25 | \(x^5 + x^2 + 1\) |
| 6 | 0x43 | \(x^6 + x + 1\) |
| 7 | 0x83 | \(x^7 + x + 1\) |
| 8 | 0x11D | \(x^8 + x^4 + x^3 + x^2 + 1\) |
上記の表は、実用的によく使われる範囲をカバーしている。より高次の既約多項式は、計算量が増大するため、専用のアルゴリズムやソフトウェア(例:SageMath、Magma、MATLAB の Communications Toolbox)を用いて生成することが推奨される。