各フィールドサイズのプリミティブ要素を出力する


16

原始有限フィールドのフィールドの乗法群の生成元です。つまり、alphain F(q)は、in q−1の単一性の原始thルートである場合、原始要素と呼ばれF(q)ます。これは、のすべての非ゼロ要素を何らかの(正の)整数F(q)として記述できることを意味します。alpha^ii

フィールドのすべての要素がF_{2^k}高々度の多項式として書くことができるk-1のいずれかである係数を持ちます10。これは完全なものにするために、あなたのコードも出力する必要がある既約多項式次数のk使用しているフィールドを定義します。

タスクはF_{2^k}、それぞれk = 1 .. 32に選択したプリミティブ要素を順番に出力するコードを書くことです。

出力は、単純kな要素の係数を任意の形式で単純にリストし、k+1さらに既約多項式の要素を別の行にリストする必要があります。k可能であれば、各値の出力を分離してください。

コードは好きなだけ時間がかかりますが、回答を送信する前にコードを最後まで実行する必要があります。

有限フィールドのプリミティブ要素を返す、または要素がプリミティブであるかどうかをテストする組み込み関数またはライブラリ関数を使用することはできません。

以下のためにk = 1のみ原始元です1

以下のためにk = 2、私たちは持っています F_4。4つの要素がある{0, 1, x, x + 1}ため、2つのプリミティブ要素xとがありx + 1ます。したがって、コードは出力できます

1 1
1 1 1

例えば係数として、2行目は既約多項式で、この場合はx^2+x+1係数を持ち1 1 1ます。


4
例がありますか?
Okx

1
出力した整数のビットとしてエンコードされた多項式やフィールド要素も出力できますか?
-orlp

@orlpはい、絶対に。

1
これには、Pari / GPのみが組み込まれていると思います。
-alephalpha

回答:



4

Mathematica、127バイト

Do[For[i=2*2^n,PolynomialMod[x^Divisors[2^n-1]+1,i~IntegerDigits~2~FromDigits~x,Modulus->2]~Count~0!=1,i--];Print@{2,i},{n,32}]

説明:

バツn2n1バツ2n11バツ12n1

出力:

8589934581111111111111111111111111111111110101

バツ32+バツ31+バツ30+バツ29+バツ28+バツ27+バツ26+バツ25+バツ24+バツ23+バツ22+バツ21+バツ20+バツ19+バツ18+バツ17+バツ16+バツ15+バツ14+バツ13+バツ12+バツ11+バツ10+バツ9+バツ8+バツ7+バツ6+バツ5+バツ4+バツ2+1

{2,3}

{2,7}

{2,13}

{2,25}

{2,61}

{2,115}

{2,253}

{2,501}

{2,1019}

{2,2041}

{2,4073}

{2,8137}

{2,16381}

{2,32743}

{2,65533}

{2,131053}

{2,262127}

{2,524263}

{2,1048531}

{2,2097145}

{2,4194227}

{2,8388589}

{2,16777213}

{2,33554351}

{2,67108849}

{2,134217697}

{2,268435427}

{2,536870805}

{2,1073741801}

{2,2147483533}

{2,4294967287}

{2,8589934581}

これはいいね。Jellyバージョンを楽しみにしています:)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.