เอาต์พุตองค์ประกอบดั้งเดิมสำหรับแต่ละขนาดฟิลด์


16

องค์ประกอบดั้งเดิมของฟิลด์ จำกัด เป็นเครื่องกำเนิดไฟฟ้าของกลุ่มคูณของสนาม ในคำอื่น ๆalphaในF(q)ที่เรียกว่าองค์ประกอบดั้งเดิมถ้ามันเป็นแบบดั้งเดิมq−1ราก TH F(q)ของความสามัคคีใน ซึ่งหมายความว่าองค์ประกอบที่ไม่ใช่ศูนย์ทั้งหมดของF(q)สามารถเขียนเป็นalpha^iบาง (บวก) iจำนวนเต็ม

องค์ประกอบทั้งหมดของสนามF_{2^k}สามารถเขียนเป็นพหุนามของระดับที่มากที่สุดk-1มีค่าสัมประสิทธิ์ที่มีทั้งหรือ1 0เพื่อที่จะทำให้เสร็จสมบูรณ์รหัสของคุณยังจำเป็นต้องมีพหุนามลดระดับkซึ่งกำหนดเขตข้อมูลที่คุณใช้

งานคือการเขียนรหัสที่แสดงองค์ประกอบดั้งเดิมของF_{2^k}การเลือกของคุณตามk = 1 .. 32ลำดับ

ผลลัพธ์ของคุณจะต้องแสดงรายการkค่าสัมประสิทธิ์ขององค์ประกอบดั้งเดิมในรูปแบบใด ๆ ที่คุณต้องการแล้วแยกk+1องค์ประกอบของพหุนามลดขนาดลงในบรรทัดแยกต่างหาก กรุณาแยกเอาท์พุทสำหรับแต่ละค่าkถ้าเป็นไปได้

รหัสของคุณอาจใช้เวลานานเท่าที่คุณต้องการ แต่คุณต้องเรียกใช้ให้เสร็จก่อนที่จะส่งคำตอบ

คุณไม่สามารถใช้ฟังก์ชัน builtin หรือ library ที่ส่งคืนองค์ประกอบดั้งเดิมของฟิลด์ จำกัด หรือทดสอบว่าองค์ประกอบนั้นเป็นแบบดั้งเดิมหรือไม่

ตัวอย่าง

สำหรับองค์ประกอบเพียงดั้งเดิมคือk = 11

สำหรับการที่เรามีk = 2 F_44 องค์ประกอบ{0, 1, x, x + 1}จึงมีสององค์ประกอบดั้งเดิมและx x + 1ดังนั้นรหัสสามารถส่งออก

1 1
1 1 1

เป็นค่าสัมประสิทธิ์ตัวอย่างที่บรรทัดที่สองเป็นพหุนามลดลงซึ่งในกรณีนี้คือซึ่งมีค่าสัมประสิทธิ์x^2+x+11 1 1


4
มีตัวอย่างอะไรบ้าง?
Okx

1
เราขอเอาท์พุทพหุนามและ / หรือองค์ประกอบภาคสนามที่เข้ารหัสเป็นบิตของจำนวนเต็มที่เราส่งออกได้หรือไม่
orlp

@ หรือไม่ใช่อย่างแน่นอน

1
ผมคิดว่า Pari / GP เป็นภาษาเดียวที่มีในตัวสำหรับการนี้
alephalpha

คำตอบ:


2

Pari / GP , 114 ไบต์

แรงบันดาลใจจากคำตอบของ isaacgในคำถามอื่น

for(n=1,32,for(i=1,2^n,if(sumdiv(2^n-1,d,Mod(x,f=Mod(Pol(binary(2*2^n-i)),2))^d==1)==1,print([x,lift(f)]);break)))

ลองออนไลน์!


หากได้รับอนุญาตบิวด์อิน:

Pari / GP , 61 ไบต์ (ไม่แข่งขัน)

for(i=1,32,print([ffprimroot(ffgen(f=ffinit(2,i))),lift(f)]))

ลองออนไลน์!


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}]

คำอธิบาย:

ถ้าเราเลือกพหุนามดั้งเดิมเป็นพหุนามลดลงแล้วxเป็นองค์ประกอบดั้งเดิม พหุนามลดลงของระดับn เป็นแบบดั้งเดิมถ้าหากมันมีคำสั่งเท่านั้น 2n-1คือหารด้วย x2n-1-1แต่ไม่สามารถแบ่งแยกได้โดยเด็ดขาด xผม-1ที่ไหน ผม วิ่งผ่านตัวหารที่เหมาะสมทั้งหมดของ 2n-1.

เอาท์พุท:

ส่งออกจำนวนเต็มที่มีบิตเป็นค่าสัมประสิทธิ์ของพหุนาม ตัวอย่างเช่น,8589934581 คือ 111111111111111111111111111110101 เมื่อเขียนด้วยเลขฐานสองมันจะแสดงพหุนาม

x32+xวันที่ 31+x30+x29+x28+x27+x26+x25+x24+x23+x22+x21+x20+x19+x18+x17+x16+x15+x14+x13+x12+x11+x10+x9+x8+x7+x6+x5+x4+x2+1

{2,3}

{2,7}

{2,13}

{2,25}

{2,61}

{2115}

{2253}

{2501}

{} 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.