LoginSignup
0
0

More than 1 year has passed since last update.

QRコード:JIS X 0510 - 附属書 A(規定)誤り検出及び訂正の生成多項式 - (計算で求める)

Posted at

生成方法

表 A.1 の多項式は次の方法で求めることが出来ます。

Python
from functools import reduce

ELEMENT = tuple(reduce(
    lambda x, _: x + [
        (lambda y: (y >= 256) and (y ^ 285) or y)(x[-1] << 1)
    ], 'x'*254, [1]
))

EXPONENT = tuple([None] + [ELEMENT.index(n) for n in range(1, 256)])

POLYNOMIAL = tuple(reduce(
    lambda g, m: g + [
        (lambda x: tuple([
            ((x[0] + m) % 255),
            *[
                EXPONENT[ELEMENT[x[n]] ^ ELEMENT[(x[n + 1] + m) % 255]]
                for n in range(m)
            ],
            x[-1]
        ]))(g[-1])
    ],
    range(1, 68),
    [
        (),
        (0, 0),
    ]
))

# 以下、出力処理

for n in range(1, len(POLYNOMIAL)):
    g = POLYNOMIAL[n]
    m = 'x^%d' % n
    e = n
    for v in reversed(g[1:-1]):
        e -= 1
        if v != 0:
            m += ' + a^%d x^%d' % (v, e)
        else:
            m += ' + x^%d' % e
    if g[0] != 0:
        m += ' + a^%d' % g[0]
    else:
        m += ' + 1'
    print('%2d:' % n, m)


for n in range(1, len(POLYNOMIAL)):
    print('%2d:' % n, ', '.join(['%3d' % v for v in reversed(POLYNOMIAL[n])]))

実行結果(前半:多項式)
多項式
 1: x^1 + 1
 2: x^2 + a^25 x^1 + a^1
 3: x^3 + a^198 x^2 + a^199 x^1 + a^3
 4: x^4 + a^75 x^3 + a^249 x^2 + a^78 x^1 + a^6
 5: x^5 + a^113 x^4 + a^164 x^3 + a^166 x^2 + a^119 x^1 + a^10
 6: x^6 + a^166 x^5 + a^0 x^4 + a^134 x^3 + a^5 x^2 + a^176 x^1 + a^15
 7: x^7 + a^87 x^6 + a^229 x^5 + a^146 x^4 + a^149 x^3 + a^238 x^2 + a^102 x^1 + a^21
 8: x^8 + a^175 x^7 + a^238 x^6 + a^208 x^5 + a^249 x^4 + a^215 x^3 + a^252 x^2 + a^196 x^1 + a^28
 9: x^9 + a^95 x^8 + a^246 x^7 + a^137 x^6 + a^231 x^5 + a^235 x^4 + a^149 x^3 + a^11 x^2 + a^123 x^1 + a^36
10: x^10 + a^251 x^9 + a^67 x^8 + a^46 x^7 + a^61 x^6 + a^118 x^5 + a^70 x^4 + a^64 x^3 + a^94 x^2 + a^32 x^1 + a^45
11: x^11 + a^220 x^10 + a^192 x^9 + a^91 x^8 + a^194 x^7 + a^172 x^6 + a^177 x^5 + a^209 x^4 + a^116 x^3 + a^227 x^2 + a^10 x^1 + a^55
12: x^12 + a^102 x^11 + a^43 x^10 + a^98 x^9 + a^121 x^8 + a^187 x^7 + a^113 x^6 + a^198 x^5 + a^143 x^4 + a^131 x^3 + a^87 x^2 + a^157 x^1 + a^66
13: x^13 + a^74 x^12 + a^152 x^11 + a^176 x^10 + a^100 x^9 + a^86 x^8 + a^100 x^7 + a^106 x^6 + a^104 x^5 + a^130 x^4 + a^218 x^3 + a^206 x^2 + a^140 x^1 + a^78
14: x^14 + a^199 x^13 + a^249 x^12 + a^155 x^11 + a^48 x^10 + a^190 x^9 + a^124 x^8 + a^218 x^7 + a^137 x^6 + a^216 x^5 + a^87 x^4 + a^207 x^3 + a^59 x^2 + a^22 x^1 + a^91
15: x^15 + a^8 x^14 + a^183 x^13 + a^61 x^12 + a^91 x^11 + a^202 x^10 + a^37 x^9 + a^51 x^8 + a^58 x^7 + a^58 x^6 + a^237 x^5 + a^140 x^4 + a^124 x^3 + a^5 x^2 + a^99 x^1 + a^105
16: x^16 + a^120 x^15 + a^104 x^14 + a^107 x^13 + a^109 x^12 + a^102 x^11 + a^161 x^10 + a^76 x^9 + a^3 x^8 + a^91 x^7 + a^191 x^6 + a^147 x^5 + a^169 x^4 + a^182 x^3 + a^194 x^2 + a^225 x^1 + a^120
17: x^17 + a^43 x^16 + a^139 x^15 + a^206 x^14 + a^78 x^13 + a^43 x^12 + a^239 x^11 + a^123 x^10 + a^206 x^9 + a^214 x^8 + a^147 x^7 + a^24 x^6 + a^99 x^5 + a^150 x^4 + a^39 x^3 + a^243 x^2 + a^163 x^1 + a^136
18: x^18 + a^215 x^17 + a^234 x^16 + a^158 x^15 + a^94 x^14 + a^184 x^13 + a^97 x^12 + a^118 x^11 + a^170 x^10 + a^79 x^9 + a^187 x^8 + a^152 x^7 + a^148 x^6 + a^252 x^5 + a^179 x^4 + a^5 x^3 + a^98 x^2 + a^96 x^1 + a^153
19: x^19 + a^67 x^18 + a^3 x^17 + a^105 x^16 + a^153 x^15 + a^52 x^14 + a^90 x^13 + a^83 x^12 + a^17 x^11 + a^150 x^10 + a^159 x^9 + a^44 x^8 + a^128 x^7 + a^153 x^6 + a^133 x^5 + a^252 x^4 + a^222 x^3 + a^138 x^2 + a^220 x^1 + a^171
20: x^20 + a^17 x^19 + a^60 x^18 + a^79 x^17 + a^50 x^16 + a^61 x^15 + a^163 x^14 + a^26 x^13 + a^187 x^12 + a^202 x^11 + a^180 x^10 + a^221 x^9 + a^225 x^8 + a^83 x^7 + a^239 x^6 + a^156 x^5 + a^164 x^4 + a^212 x^3 + a^212 x^2 + a^188 x^1 + a^190
21: x^21 + a^240 x^20 + a^233 x^19 + a^104 x^18 + a^247 x^17 + a^181 x^16 + a^140 x^15 + a^67 x^14 + a^98 x^13 + a^85 x^12 + a^200 x^11 + a^210 x^10 + a^115 x^9 + a^148 x^8 + a^137 x^7 + a^230 x^6 + a^36 x^5 + a^122 x^4 + a^254 x^3 + a^148 x^2 + a^175 x^1 + a^210
22: x^22 + a^210 x^21 + a^171 x^20 + a^247 x^19 + a^242 x^18 + a^93 x^17 + a^230 x^16 + a^14 x^15 + a^109 x^14 + a^221 x^13 + a^53 x^12 + a^200 x^11 + a^74 x^10 + a^8 x^9 + a^172 x^8 + a^98 x^7 + a^80 x^6 + a^219 x^5 + a^134 x^4 + a^160 x^3 + a^105 x^2 + a^165 x^1 + a^231
23: x^23 + a^171 x^22 + a^102 x^21 + a^146 x^20 + a^91 x^19 + a^49 x^18 + a^103 x^17 + a^65 x^16 + a^17 x^15 + a^193 x^14 + a^150 x^13 + a^14 x^12 + a^25 x^11 + a^183 x^10 + a^248 x^9 + a^94 x^8 + a^164 x^7 + a^224 x^6 + a^192 x^5 + a^1 x^4 + a^78 x^3 + a^56 x^2 + a^147 x^1 + a^253
24: x^24 + a^229 x^23 + a^121 x^22 + a^135 x^21 + a^48 x^20 + a^211 x^19 + a^117 x^18 + a^251 x^17 + a^126 x^16 + a^159 x^15 + a^180 x^14 + a^169 x^13 + a^152 x^12 + a^192 x^11 + a^226 x^10 + a^228 x^9 + a^218 x^8 + a^111 x^7 + a^0 x^6 + a^117 x^5 + a^232 x^4 + a^87 x^3 + a^96 x^2 + a^227 x^1 + a^21
25: x^25 + a^231 x^24 + a^181 x^23 + a^156 x^22 + a^39 x^21 + a^170 x^20 + a^26 x^19 + a^12 x^18 + a^59 x^17 + a^15 x^16 + a^148 x^15 + a^201 x^14 + a^54 x^13 + a^66 x^12 + a^237 x^11 + a^208 x^10 + a^99 x^9 + a^167 x^8 + a^144 x^7 + a^182 x^6 + a^95 x^5 + a^243 x^4 + a^129 x^3 + a^178 x^2 + a^252 x^1 + a^45
26: x^26 + a^173 x^25 + a^125 x^24 + a^158 x^23 + a^2 x^22 + a^103 x^21 + a^182 x^20 + a^118 x^19 + a^17 x^18 + a^145 x^17 + a^201 x^16 + a^111 x^15 + a^28 x^14 + a^165 x^13 + a^53 x^12 + a^161 x^11 + a^21 x^10 + a^245 x^9 + a^142 x^8 + a^13 x^7 + a^102 x^6 + a^48 x^5 + a^227 x^4 + a^153 x^3 + a^145 x^2 + a^218 x^1 + a^70
27: x^27 + a^79 x^26 + a^228 x^25 + a^8 x^24 + a^165 x^23 + a^227 x^22 + a^21 x^21 + a^180 x^20 + a^29 x^19 + a^9 x^18 + a^237 x^17 + a^70 x^16 + a^99 x^15 + a^45 x^14 + a^58 x^13 + a^138 x^12 + a^135 x^11 + a^73 x^10 + a^126 x^9 + a^172 x^8 + a^94 x^7 + a^216 x^6 + a^193 x^5 + a^157 x^4 + a^26 x^3 + a^17 x^2 + a^149 x^1 + a^96
28: x^28 + a^168 x^27 + a^223 x^26 + a^200 x^25 + a^104 x^24 + a^224 x^23 + a^234 x^22 + a^108 x^21 + a^180 x^20 + a^110 x^19 + a^190 x^18 + a^195 x^17 + a^147 x^16 + a^205 x^15 + a^27 x^14 + a^232 x^13 + a^201 x^12 + a^21 x^11 + a^43 x^10 + a^245 x^9 + a^87 x^8 + a^42 x^7 + a^195 x^6 + a^212 x^5 + a^119 x^4 + a^242 x^3 + a^37 x^2 + a^9 x^1 + a^123
29: x^29 + a^156 x^28 + a^45 x^27 + a^183 x^26 + a^29 x^25 + a^151 x^24 + a^219 x^23 + a^54 x^22 + a^96 x^21 + a^249 x^20 + a^24 x^19 + a^136 x^18 + a^5 x^17 + a^241 x^16 + a^175 x^15 + a^189 x^14 + a^28 x^13 + a^75 x^12 + a^234 x^11 + a^150 x^10 + a^148 x^9 + a^23 x^8 + a^9 x^7 + a^202 x^6 + a^162 x^5 + a^68 x^4 + a^250 x^3 + a^140 x^2 + a^24 x^1 + a^151
30: x^30 + a^41 x^29 + a^173 x^28 + a^145 x^27 + a^152 x^26 + a^216 x^25 + a^31 x^24 + a^179 x^23 + a^182 x^22 + a^50 x^21 + a^48 x^20 + a^110 x^19 + a^86 x^18 + a^239 x^17 + a^96 x^16 + a^222 x^15 + a^125 x^14 + a^42 x^13 + a^173 x^12 + a^226 x^11 + a^193 x^10 + a^224 x^9 + a^130 x^8 + a^156 x^7 + a^37 x^6 + a^251 x^5 + a^216 x^4 + a^238 x^3 + a^40 x^2 + a^192 x^1 + a^180
31: x^31 + a^20 x^30 + a^37 x^29 + a^252 x^28 + a^93 x^27 + a^63 x^26 + a^75 x^25 + a^225 x^24 + a^31 x^23 + a^115 x^22 + a^83 x^21 + a^113 x^20 + a^39 x^19 + a^44 x^18 + a^73 x^17 + a^122 x^16 + a^137 x^15 + a^118 x^14 + a^119 x^13 + a^144 x^12 + a^248 x^11 + a^248 x^10 + a^55 x^9 + a^1 x^8 + a^225 x^7 + a^105 x^6 + a^123 x^5 + a^183 x^4 + a^117 x^3 + a^187 x^2 + a^200 x^1 + a^210
32: x^32 + a^10 x^31 + a^6 x^30 + a^106 x^29 + a^190 x^28 + a^249 x^27 + a^167 x^26 + a^4 x^25 + a^67 x^24 + a^209 x^23 + a^138 x^22 + a^138 x^21 + a^32 x^20 + a^242 x^19 + a^123 x^18 + a^89 x^17 + a^27 x^16 + a^120 x^15 + a^185 x^14 + a^80 x^13 + a^156 x^12 + a^38 x^11 + a^69 x^10 + a^171 x^9 + a^60 x^8 + a^28 x^7 + a^222 x^6 + a^80 x^5 + a^52 x^4 + a^254 x^3 + a^185 x^2 + a^220 x^1 + a^241
33: x^33 + a^245 x^32 + a^231 x^31 + a^55 x^30 + a^24 x^29 + a^71 x^28 + a^78 x^27 + a^76 x^26 + a^81 x^25 + a^225 x^24 + a^212 x^23 + a^173 x^22 + a^37 x^21 + a^215 x^20 + a^46 x^19 + a^119 x^18 + a^229 x^17 + a^245 x^16 + a^167 x^15 + a^126 x^14 + a^72 x^13 + a^181 x^12 + a^94 x^11 + a^165 x^10 + a^210 x^9 + a^98 x^8 + a^125 x^7 + a^159 x^6 + a^184 x^5 + a^169 x^4 + a^232 x^3 + a^185 x^2 + a^231 x^1 + a^18
34: x^34 + a^111 x^33 + a^77 x^32 + a^146 x^31 + a^94 x^30 + a^26 x^29 + a^21 x^28 + a^108 x^27 + a^19 x^26 + a^105 x^25 + a^94 x^24 + a^113 x^23 + a^193 x^22 + a^86 x^21 + a^140 x^20 + a^163 x^19 + a^125 x^18 + a^58 x^17 + a^158 x^16 + a^229 x^15 + a^239 x^14 + a^218 x^13 + a^103 x^12 + a^56 x^11 + a^70 x^10 + a^114 x^9 + a^61 x^8 + a^183 x^7 + a^129 x^6 + a^167 x^5 + a^13 x^4 + a^98 x^3 + a^62 x^2 + a^129 x^1 + a^51
35: x^35 + a^7 x^34 + a^94 x^33 + a^143 x^32 + a^81 x^31 + a^247 x^30 + a^127 x^29 + a^202 x^28 + a^202 x^27 + a^194 x^26 + a^125 x^25 + a^146 x^24 + a^29 x^23 + a^138 x^22 + a^162 x^21 + a^153 x^20 + a^65 x^19 + a^105 x^18 + a^122 x^17 + a^116 x^16 + a^238 x^15 + a^26 x^14 + a^36 x^13 + a^216 x^12 + a^112 x^11 + a^125 x^10 + a^228 x^9 + a^15 x^8 + a^49 x^7 + a^8 x^6 + a^162 x^5 + a^30 x^4 + a^126 x^3 + a^111 x^2 + a^58 x^1 + a^85
36: x^36 + a^200 x^35 + a^183 x^34 + a^98 x^33 + a^16 x^32 + a^172 x^31 + a^31 x^30 + a^246 x^29 + a^234 x^28 + a^60 x^27 + a^152 x^26 + a^115 x^25 + a^0 x^24 + a^167 x^23 + a^152 x^22 + a^113 x^21 + a^248 x^20 + a^238 x^19 + a^107 x^18 + a^18 x^17 + a^63 x^16 + a^218 x^15 + a^37 x^14 + a^87 x^13 + a^210 x^12 + a^105 x^11 + a^177 x^10 + a^120 x^9 + a^74 x^8 + a^121 x^7 + a^196 x^6 + a^117 x^5 + a^251 x^4 + a^113 x^3 + a^233 x^2 + a^30 x^1 + a^120
37: x^37 + a^154 x^36 + a^75 x^35 + a^141 x^34 + a^180 x^33 + a^61 x^32 + a^165 x^31 + a^104 x^30 + a^232 x^29 + a^46 x^28 + a^227 x^27 + a^96 x^26 + a^178 x^25 + a^92 x^24 + a^135 x^23 + a^57 x^22 + a^162 x^21 + a^120 x^20 + a^194 x^19 + a^212 x^18 + a^174 x^17 + a^252 x^16 + a^183 x^15 + a^42 x^14 + a^35 x^13 + a^157 x^12 + a^111 x^11 + a^23 x^10 + a^133 x^9 + a^100 x^8 + a^8 x^7 + a^105 x^6 + a^37 x^5 + a^192 x^4 + a^189 x^3 + a^159 x^2 + a^19 x^1 + a^156
38: x^38 + a^159 x^37 + a^34 x^36 + a^38 x^35 + a^228 x^34 + a^230 x^33 + a^59 x^32 + a^243 x^31 + a^95 x^30 + a^49 x^29 + a^218 x^28 + a^176 x^27 + a^164 x^26 + a^20 x^25 + a^65 x^24 + a^45 x^23 + a^111 x^22 + a^39 x^21 + a^81 x^20 + a^49 x^19 + a^118 x^18 + a^113 x^17 + a^222 x^16 + a^193 x^15 + a^250 x^14 + a^242 x^13 + a^168 x^12 + a^217 x^11 + a^41 x^10 + a^164 x^9 + a^247 x^8 + a^177 x^7 + a^30 x^6 + a^238 x^5 + a^18 x^4 + a^120 x^3 + a^153 x^2 + a^60 x^1 + a^193
39: x^39 + a^81 x^38 + a^216 x^37 + a^174 x^36 + a^47 x^35 + a^200 x^34 + a^150 x^33 + a^59 x^32 + a^156 x^31 + a^89 x^30 + a^143 x^29 + a^89 x^28 + a^166 x^27 + a^183 x^26 + a^170 x^25 + a^152 x^24 + a^21 x^23 + a^165 x^22 + a^177 x^21 + a^113 x^20 + a^132 x^19 + a^234 x^18 + a^5 x^17 + a^154 x^16 + a^68 x^15 + a^124 x^14 + a^175 x^13 + a^196 x^12 + a^157 x^11 + a^249 x^10 + a^233 x^9 + a^83 x^8 + a^24 x^7 + a^153 x^6 + a^241 x^5 + a^126 x^4 + a^36 x^3 + a^116 x^2 + a^19 x^1 + a^231
40: x^40 + a^59 x^39 + a^116 x^38 + a^79 x^37 + a^161 x^36 + a^252 x^35 + a^98 x^34 + a^128 x^33 + a^205 x^32 + a^128 x^31 + a^161 x^30 + a^247 x^29 + a^57 x^28 + a^163 x^27 + a^56 x^26 + a^235 x^25 + a^106 x^24 + a^53 x^23 + a^26 x^22 + a^187 x^21 + a^174 x^20 + a^226 x^19 + a^104 x^18 + a^170 x^17 + a^7 x^16 + a^175 x^15 + a^35 x^14 + a^181 x^13 + a^114 x^12 + a^88 x^11 + a^41 x^10 + a^47 x^9 + a^163 x^8 + a^125 x^7 + a^134 x^6 + a^72 x^5 + a^20 x^4 + a^232 x^3 + a^53 x^2 + a^35 x^1 + a^15
41: x^41 + a^132 x^40 + a^167 x^39 + a^52 x^38 + a^139 x^37 + a^184 x^36 + a^223 x^35 + a^149 x^34 + a^92 x^33 + a^250 x^32 + a^18 x^31 + a^83 x^30 + a^33 x^29 + a^127 x^28 + a^109 x^27 + a^194 x^26 + a^7 x^25 + a^211 x^24 + a^242 x^23 + a^109 x^22 + a^66 x^21 + a^86 x^20 + a^169 x^19 + a^87 x^18 + a^96 x^17 + a^187 x^16 + a^159 x^15 + a^114 x^14 + a^172 x^13 + a^118 x^12 + a^208 x^11 + a^183 x^10 + a^200 x^9 + a^82 x^8 + a^179 x^7 + a^38 x^6 + a^39 x^5 + a^34 x^4 + a^242 x^3 + a^142 x^2 + a^147 x^1 + a^55
42: x^42 + a^250 x^41 + a^103 x^40 + a^221 x^39 + a^230 x^38 + a^25 x^37 + a^18 x^36 + a^137 x^35 + a^231 x^34 + a^0 x^33 + a^3 x^32 + a^58 x^31 + a^242 x^30 + a^221 x^29 + a^191 x^28 + a^110 x^27 + a^84 x^26 + a^230 x^25 + a^8 x^24 + a^188 x^23 + a^106 x^22 + a^96 x^21 + a^147 x^20 + a^15 x^19 + a^131 x^18 + a^139 x^17 + a^34 x^16 + a^101 x^15 + a^223 x^14 + a^39 x^13 + a^101 x^12 + a^213 x^11 + a^199 x^10 + a^237 x^9 + a^254 x^8 + a^201 x^7 + a^123 x^6 + a^171 x^5 + a^162 x^4 + a^194 x^3 + a^117 x^2 + a^50 x^1 + a^96
43: x^43 + a^96 x^42 + a^67 x^41 + a^3 x^40 + a^245 x^39 + a^217 x^38 + a^215 x^37 + a^33 x^36 + a^65 x^35 + a^240 x^34 + a^109 x^33 + a^144 x^32 + a^63 x^31 + a^21 x^30 + a^131 x^29 + a^38 x^28 + a^101 x^27 + a^153 x^26 + a^128 x^25 + a^55 x^24 + a^31 x^23 + a^237 x^22 + a^3 x^21 + a^94 x^20 + a^160 x^19 + a^20 x^18 + a^87 x^17 + a^77 x^16 + a^56 x^15 + a^191 x^14 + a^123 x^13 + a^207 x^12 + a^75 x^11 + a^82 x^10 + a^0 x^9 + a^122 x^8 + a^132 x^7 + a^101 x^6 + a^145 x^5 + a^215 x^4 + a^15 x^3 + a^121 x^2 + a^192 x^1 + a^138
44: x^44 + a^190 x^43 + a^7 x^42 + a^61 x^41 + a^121 x^40 + a^71 x^39 + a^246 x^38 + a^69 x^37 + a^55 x^36 + a^168 x^35 + a^188 x^34 + a^89 x^33 + a^243 x^32 + a^191 x^31 + a^25 x^30 + a^72 x^29 + a^123 x^28 + a^9 x^27 + a^145 x^26 + a^14 x^25 + a^247 x^24 + a^1 x^23 + a^238 x^22 + a^44 x^21 + a^78 x^20 + a^143 x^19 + a^62 x^18 + a^224 x^17 + a^126 x^16 + a^118 x^15 + a^114 x^14 + a^68 x^13 + a^163 x^12 + a^52 x^11 + a^194 x^10 + a^217 x^9 + a^147 x^8 + a^204 x^7 + a^169 x^6 + a^37 x^5 + a^130 x^4 + a^113 x^3 + a^102 x^2 + a^73 x^1 + a^181
45: x^45 + a^6 x^44 + a^172 x^43 + a^72 x^42 + a^250 x^41 + a^18 x^40 + a^171 x^39 + a^171 x^38 + a^162 x^37 + a^229 x^36 + a^187 x^35 + a^239 x^34 + a^4 x^33 + a^187 x^32 + a^11 x^31 + a^37 x^30 + a^228 x^29 + a^102 x^28 + a^72 x^27 + a^102 x^26 + a^22 x^25 + a^33 x^24 + a^73 x^23 + a^95 x^22 + a^99 x^21 + a^132 x^20 + a^1 x^19 + a^15 x^18 + a^89 x^17 + a^4 x^16 + a^112 x^15 + a^130 x^14 + a^95 x^13 + a^211 x^12 + a^235 x^11 + a^227 x^10 + a^58 x^9 + a^35 x^8 + a^88 x^7 + a^132 x^6 + a^23 x^5 + a^44 x^4 + a^165 x^3 + a^54 x^2 + a^187 x^1 + a^225
46: x^46 + a^112 x^45 + a^94 x^44 + a^88 x^43 + a^112 x^42 + a^253 x^41 + a^224 x^40 + a^202 x^39 + a^115 x^38 + a^187 x^37 + a^99 x^36 + a^89 x^35 + a^5 x^34 + a^54 x^33 + a^113 x^32 + a^129 x^31 + a^44 x^30 + a^58 x^29 + a^16 x^28 + a^135 x^27 + a^216 x^26 + a^169 x^25 + a^211 x^24 + a^36 x^23 + a^1 x^22 + a^4 x^21 + a^96 x^20 + a^60 x^19 + a^241 x^18 + a^73 x^17 + a^104 x^16 + a^234 x^15 + a^8 x^14 + a^249 x^13 + a^245 x^12 + a^119 x^11 + a^174 x^10 + a^52 x^9 + a^25 x^8 + a^157 x^7 + a^224 x^6 + a^43 x^5 + a^202 x^4 + a^223 x^3 + a^19 x^2 + a^82 x^1 + a^15
47: x^47 + a^76 x^46 + a^164 x^45 + a^229 x^44 + a^92 x^43 + a^79 x^42 + a^168 x^41 + a^219 x^40 + a^110 x^39 + a^104 x^38 + a^21 x^37 + a^220 x^36 + a^74 x^35 + a^19 x^34 + a^199 x^33 + a^195 x^32 + a^100 x^31 + a^93 x^30 + a^191 x^29 + a^43 x^28 + a^213 x^27 + a^72 x^26 + a^56 x^25 + a^138 x^24 + a^161 x^23 + a^125 x^22 + a^187 x^21 + a^119 x^20 + a^250 x^19 + a^189 x^18 + a^137 x^17 + a^190 x^16 + a^76 x^15 + a^126 x^14 + a^247 x^13 + a^93 x^12 + a^30 x^11 + a^132 x^10 + a^6 x^9 + a^58 x^8 + a^213 x^7 + a^208 x^6 + a^165 x^5 + a^224 x^4 + a^152 x^3 + a^133 x^2 + a^91 x^1 + a^61
48: x^48 + a^228 x^47 + a^25 x^46 + a^196 x^45 + a^130 x^44 + a^211 x^43 + a^146 x^42 + a^60 x^41 + a^24 x^40 + a^251 x^39 + a^90 x^38 + a^39 x^37 + a^102 x^36 + a^240 x^35 + a^61 x^34 + a^178 x^33 + a^63 x^32 + a^46 x^31 + a^123 x^30 + a^115 x^29 + a^18 x^28 + a^221 x^27 + a^111 x^26 + a^135 x^25 + a^160 x^24 + a^182 x^23 + a^205 x^22 + a^107 x^21 + a^206 x^20 + a^95 x^19 + a^150 x^18 + a^120 x^17 + a^184 x^16 + a^91 x^15 + a^21 x^14 + a^247 x^13 + a^156 x^12 + a^140 x^11 + a^238 x^10 + a^191 x^9 + a^11 x^8 + a^94 x^7 + a^227 x^6 + a^84 x^5 + a^50 x^4 + a^163 x^3 + a^39 x^2 + a^34 x^1 + a^108
49: x^49 + a^172 x^48 + a^121 x^47 + a^1 x^46 + a^41 x^45 + a^193 x^44 + a^222 x^43 + a^237 x^42 + a^64 x^41 + a^109 x^40 + a^181 x^39 + a^52 x^38 + a^120 x^37 + a^212 x^36 + a^226 x^35 + a^239 x^34 + a^245 x^33 + a^208 x^32 + a^20 x^31 + a^246 x^30 + a^34 x^29 + a^225 x^28 + a^204 x^27 + a^134 x^26 + a^101 x^25 + a^125 x^24 + a^206 x^23 + a^69 x^22 + a^138 x^21 + a^250 x^20 + a^0 x^19 + a^77 x^18 + a^58 x^17 + a^143 x^16 + a^185 x^15 + a^220 x^14 + a^254 x^13 + a^210 x^12 + a^190 x^11 + a^112 x^10 + a^88 x^9 + a^91 x^8 + a^57 x^7 + a^90 x^6 + a^109 x^5 + a^5 x^4 + a^13 x^3 + a^181 x^2 + a^25 x^1 + a^156
50: x^50 + a^232 x^49 + a^125 x^48 + a^157 x^47 + a^161 x^46 + a^164 x^45 + a^9 x^44 + a^118 x^43 + a^46 x^42 + a^209 x^41 + a^99 x^40 + a^203 x^39 + a^193 x^38 + a^35 x^37 + a^3 x^36 + a^209 x^35 + a^111 x^34 + a^195 x^33 + a^242 x^32 + a^203 x^31 + a^225 x^30 + a^46 x^29 + a^13 x^28 + a^32 x^27 + a^160 x^26 + a^126 x^25 + a^209 x^24 + a^130 x^23 + a^160 x^22 + a^242 x^21 + a^215 x^20 + a^242 x^19 + a^75 x^18 + a^77 x^17 + a^42 x^16 + a^189 x^15 + a^32 x^14 + a^113 x^13 + a^65 x^12 + a^124 x^11 + a^69 x^10 + a^228 x^9 + a^114 x^8 + a^235 x^7 + a^175 x^6 + a^124 x^5 + a^170 x^4 + a^215 x^3 + a^232 x^2 + a^133 x^1 + a^205
51: x^51 + a^213 x^50 + a^166 x^49 + a^142 x^48 + a^43 x^47 + a^10 x^46 + a^216 x^45 + a^141 x^44 + a^163 x^43 + a^172 x^42 + a^180 x^41 + a^102 x^40 + a^70 x^39 + a^89 x^38 + a^62 x^37 + a^222 x^36 + a^62 x^35 + a^42 x^34 + a^210 x^33 + a^151 x^32 + a^163 x^31 + a^218 x^30 + a^70 x^29 + a^77 x^28 + a^39 x^27 + a^166 x^26 + a^191 x^25 + a^114 x^24 + a^202 x^23 + a^245 x^22 + a^188 x^21 + a^183 x^20 + a^221 x^19 + a^75 x^18 + a^212 x^17 + a^27 x^16 + a^237 x^15 + a^127 x^14 + a^204 x^13 + a^235 x^12 + a^62 x^11 + a^190 x^10 + a^232 x^9 + a^18 x^8 + a^46 x^7 + a^171 x^6 + a^15 x^5 + a^98 x^4 + a^247 x^3 + a^66 x^2 + a^163 x^1 + 1
52: x^52 + a^116 x^51 + a^50 x^50 + a^86 x^49 + a^186 x^48 + a^50 x^47 + a^220 x^46 + a^251 x^45 + a^89 x^44 + a^192 x^43 + a^46 x^42 + a^86 x^41 + a^127 x^40 + a^124 x^39 + a^19 x^38 + a^184 x^37 + a^233 x^36 + a^151 x^35 + a^215 x^34 + a^22 x^33 + a^14 x^32 + a^59 x^31 + a^145 x^30 + a^37 x^29 + a^242 x^28 + a^203 x^27 + a^134 x^26 + a^254 x^25 + a^89 x^24 + a^190 x^23 + a^94 x^22 + a^59 x^21 + a^65 x^20 + a^124 x^19 + a^113 x^18 + a^100 x^17 + a^233 x^16 + a^235 x^15 + a^121 x^14 + a^22 x^13 + a^76 x^12 + a^86 x^11 + a^97 x^10 + a^39 x^9 + a^242 x^8 + a^200 x^7 + a^220 x^6 + a^101 x^5 + a^33 x^4 + a^239 x^3 + a^254 x^2 + a^116 x^1 + a^51
53: x^53 + a^122 x^52 + a^214 x^51 + a^231 x^50 + a^136 x^49 + a^199 x^48 + a^11 x^47 + a^6 x^46 + a^205 x^45 + a^124 x^44 + a^72 x^43 + a^213 x^42 + a^117 x^41 + a^187 x^40 + a^60 x^39 + a^147 x^38 + a^201 x^37 + a^73 x^36 + a^75 x^35 + a^33 x^34 + a^146 x^33 + a^171 x^32 + a^247 x^31 + a^118 x^30 + a^208 x^29 + a^157 x^28 + a^177 x^27 + a^203 x^26 + a^235 x^25 + a^83 x^24 + a^45 x^23 + a^226 x^22 + a^202 x^21 + a^229 x^20 + a^168 x^19 + a^7 x^18 + a^57 x^17 + a^237 x^16 + a^235 x^15 + a^200 x^14 + a^124 x^13 + a^106 x^12 + a^254 x^11 + a^165 x^10 + a^14 x^9 + a^147 x^8 + a^0 x^7 + a^57 x^6 + a^42 x^5 + a^31 x^4 + a^178 x^3 + a^213 x^2 + a^173 x^1 + a^103
54: x^54 + a^183 x^53 + a^26 x^52 + a^201 x^51 + a^87 x^50 + a^210 x^49 + a^221 x^48 + a^113 x^47 + a^21 x^46 + a^46 x^45 + a^65 x^44 + a^45 x^43 + a^50 x^42 + a^238 x^41 + a^184 x^40 + a^249 x^39 + a^225 x^38 + a^102 x^37 + a^58 x^36 + a^209 x^35 + a^218 x^34 + a^109 x^33 + a^165 x^32 + a^26 x^31 + a^95 x^30 + a^184 x^29 + a^192 x^28 + a^52 x^27 + a^245 x^26 + a^35 x^25 + a^254 x^24 + a^238 x^23 + a^175 x^22 + a^172 x^21 + a^79 x^20 + a^123 x^19 + a^25 x^18 + a^122 x^17 + a^43 x^16 + a^120 x^15 + a^108 x^14 + a^215 x^13 + a^80 x^12 + a^128 x^11 + a^201 x^10 + a^235 x^9 + a^8 x^8 + a^153 x^7 + a^59 x^6 + a^101 x^5 + a^31 x^4 + a^198 x^3 + a^76 x^2 + a^31 x^1 + a^156
55: x^55 + a^38 x^54 + a^197 x^53 + a^123 x^52 + a^167 x^51 + a^16 x^50 + a^87 x^49 + a^178 x^48 + a^238 x^47 + a^227 x^46 + a^97 x^45 + a^148 x^44 + a^247 x^43 + a^26 x^42 + a^90 x^41 + a^228 x^40 + a^182 x^39 + a^236 x^38 + a^197 x^37 + a^47 x^36 + a^249 x^35 + a^36 x^34 + a^213 x^33 + a^54 x^32 + a^113 x^31 + a^181 x^30 + a^74 x^29 + a^177 x^28 + a^204 x^27 + a^155 x^26 + a^61 x^25 + a^47 x^24 + a^42 x^23 + a^0 x^22 + a^132 x^21 + a^144 x^20 + a^251 x^19 + a^200 x^18 + a^38 x^17 + a^38 x^16 + a^138 x^15 + a^54 x^14 + a^44 x^13 + a^64 x^12 + a^19 x^11 + a^22 x^10 + a^206 x^9 + a^16 x^8 + a^10 x^7 + a^228 x^6 + a^211 x^5 + a^161 x^4 + a^171 x^3 + a^44 x^2 + a^194 x^1 + a^210
56: x^56 + a^106 x^55 + a^120 x^54 + a^107 x^53 + a^157 x^52 + a^164 x^51 + a^216 x^50 + a^112 x^49 + a^116 x^48 + a^2 x^47 + a^91 x^46 + a^248 x^45 + a^163 x^44 + a^36 x^43 + a^201 x^42 + a^202 x^41 + a^229 x^40 + a^6 x^39 + a^144 x^38 + a^254 x^37 + a^155 x^36 + a^135 x^35 + a^208 x^34 + a^170 x^33 + a^209 x^32 + a^12 x^31 + a^139 x^30 + a^127 x^29 + a^142 x^28 + a^182 x^27 + a^249 x^26 + a^177 x^25 + a^174 x^24 + a^190 x^23 + a^28 x^22 + a^10 x^21 + a^85 x^20 + a^239 x^19 + a^184 x^18 + a^101 x^17 + a^124 x^16 + a^152 x^15 + a^206 x^14 + a^96 x^13 + a^23 x^12 + a^163 x^11 + a^61 x^10 + a^27 x^9 + a^196 x^8 + a^247 x^7 + a^151 x^6 + a^154 x^5 + a^202 x^4 + a^207 x^3 + a^20 x^2 + a^61 x^1 + a^10
57: x^57 + a^58 x^56 + a^140 x^55 + a^237 x^54 + a^93 x^53 + a^106 x^52 + a^61 x^51 + a^193 x^50 + a^2 x^49 + a^87 x^48 + a^73 x^47 + a^194 x^46 + a^215 x^45 + a^159 x^44 + a^163 x^43 + a^10 x^42 + a^155 x^41 + a^5 x^40 + a^121 x^39 + a^153 x^38 + a^59 x^37 + a^248 x^36 + a^4 x^35 + a^117 x^34 + a^22 x^33 + a^60 x^32 + a^177 x^31 + a^144 x^30 + a^44 x^29 + a^72 x^28 + a^228 x^27 + a^62 x^26 + a^1 x^25 + a^19 x^24 + a^170 x^23 + a^113 x^22 + a^158 x^21 + a^25 x^20 + a^175 x^19 + a^199 x^18 + a^139 x^17 + a^90 x^16 + a^1 x^15 + a^210 x^14 + a^7 x^13 + a^119 x^12 + a^154 x^11 + a^89 x^10 + a^159 x^9 + a^130 x^8 + a^122 x^7 + a^46 x^6 + a^147 x^5 + a^190 x^4 + a^135 x^3 + a^94 x^2 + a^68 x^1 + a^66
58: x^58 + a^82 x^57 + a^116 x^56 + a^26 x^55 + a^247 x^54 + a^66 x^53 + a^27 x^52 + a^62 x^51 + a^107 x^50 + a^252 x^49 + a^182 x^48 + a^200 x^47 + a^185 x^46 + a^235 x^45 + a^55 x^44 + a^251 x^43 + a^242 x^42 + a^210 x^41 + a^144 x^40 + a^154 x^39 + a^237 x^38 + a^176 x^37 + a^141 x^36 + a^192 x^35 + a^248 x^34 + a^152 x^33 + a^249 x^32 + a^206 x^31 + a^85 x^30 + a^253 x^29 + a^142 x^28 + a^65 x^27 + a^165 x^26 + a^125 x^25 + a^23 x^24 + a^24 x^23 + a^30 x^22 + a^122 x^21 + a^240 x^20 + a^214 x^19 + a^6 x^18 + a^129 x^17 + a^218 x^16 + a^29 x^15 + a^145 x^14 + a^127 x^13 + a^134 x^12 + a^206 x^11 + a^245 x^10 + a^117 x^9 + a^29 x^8 + a^41 x^7 + a^63 x^6 + a^159 x^5 + a^142 x^4 + a^233 x^3 + a^125 x^2 + a^148 x^1 + a^123
59: x^59 + a^57 x^58 + a^115 x^57 + a^232 x^56 + a^11 x^55 + a^195 x^54 + a^217 x^53 + a^3 x^52 + a^206 x^51 + a^77 x^50 + a^67 x^49 + a^29 x^48 + a^166 x^47 + a^180 x^46 + a^106 x^45 + a^118 x^44 + a^203 x^43 + a^17 x^42 + a^69 x^41 + a^152 x^40 + a^213 x^39 + a^74 x^38 + a^44 x^37 + a^49 x^36 + a^43 x^35 + a^98 x^34 + a^61 x^33 + a^253 x^32 + a^122 x^31 + a^14 x^30 + a^43 x^29 + a^209 x^28 + a^143 x^27 + a^9 x^26 + a^104 x^25 + a^107 x^24 + a^171 x^23 + a^224 x^22 + a^57 x^21 + a^254 x^20 + a^251 x^19 + a^226 x^18 + a^232 x^17 + a^221 x^16 + a^194 x^15 + a^240 x^14 + a^117 x^13 + a^161 x^12 + a^82 x^11 + a^178 x^10 + a^246 x^9 + a^178 x^8 + a^33 x^7 + a^50 x^6 + a^86 x^5 + a^215 x^4 + a^239 x^3 + a^180 x^2 + a^180 x^1 + a^181
60: x^60 + a^107 x^59 + a^140 x^58 + a^26 x^57 + a^12 x^56 + a^9 x^55 + a^141 x^54 + a^243 x^53 + a^197 x^52 + a^226 x^51 + a^197 x^50 + a^219 x^49 + a^45 x^48 + a^211 x^47 + a^101 x^46 + a^219 x^45 + a^120 x^44 + a^28 x^43 + a^181 x^42 + a^127 x^41 + a^6 x^40 + a^100 x^39 + a^247 x^38 + a^2 x^37 + a^205 x^36 + a^198 x^35 + a^57 x^34 + a^115 x^33 + a^219 x^32 + a^101 x^31 + a^109 x^30 + a^160 x^29 + a^82 x^28 + a^37 x^27 + a^38 x^26 + a^238 x^25 + a^49 x^24 + a^160 x^23 + a^209 x^22 + a^121 x^21 + a^86 x^20 + a^11 x^19 + a^124 x^18 + a^30 x^17 + a^181 x^16 + a^84 x^15 + a^25 x^14 + a^194 x^13 + a^87 x^12 + a^65 x^11 + a^102 x^10 + a^190 x^9 + a^220 x^8 + a^70 x^7 + a^27 x^6 + a^209 x^5 + a^16 x^4 + a^89 x^3 + a^7 x^2 + a^33 x^1 + a^240
61: x^61 + a^161 x^60 + a^244 x^59 + a^105 x^58 + a^115 x^57 + a^64 x^56 + a^9 x^55 + a^221 x^54 + a^236 x^53 + a^16 x^52 + a^145 x^51 + a^148 x^50 + a^34 x^49 + a^144 x^48 + a^186 x^47 + a^13 x^46 + a^20 x^45 + a^254 x^44 + a^246 x^43 + a^38 x^42 + a^35 x^41 + a^202 x^40 + a^72 x^39 + a^4 x^38 + a^212 x^37 + a^159 x^36 + a^211 x^35 + a^165 x^34 + a^135 x^33 + a^252 x^32 + a^250 x^31 + a^25 x^30 + a^87 x^29 + a^30 x^28 + a^120 x^27 + a^226 x^26 + a^234 x^25 + a^92 x^24 + a^199 x^23 + a^72 x^22 + a^7 x^21 + a^155 x^20 + a^218 x^19 + a^231 x^18 + a^44 x^17 + a^125 x^16 + a^178 x^15 + a^156 x^14 + a^174 x^13 + a^124 x^12 + a^43 x^11 + a^100 x^10 + a^31 x^9 + a^56 x^8 + a^101 x^7 + a^204 x^6 + a^64 x^5 + a^175 x^4 + a^225 x^3 + a^169 x^2 + a^146 x^1 + a^45
62: x^62 + a^65 x^61 + a^202 x^60 + a^113 x^59 + a^98 x^58 + a^71 x^57 + a^223 x^56 + a^248 x^55 + a^118 x^54 + a^214 x^53 + a^94 x^52 + a^0 x^51 + a^122 x^50 + a^37 x^49 + a^23 x^48 + a^2 x^47 + a^228 x^46 + a^58 x^45 + a^121 x^44 + a^7 x^43 + a^105 x^42 + a^135 x^41 + a^78 x^40 + a^243 x^39 + a^118 x^38 + a^70 x^37 + a^76 x^36 + a^223 x^35 + a^89 x^34 + a^72 x^33 + a^50 x^32 + a^70 x^31 + a^111 x^30 + a^194 x^29 + a^17 x^28 + a^212 x^27 + a^126 x^26 + a^181 x^25 + a^35 x^24 + a^221 x^23 + a^117 x^22 + a^235 x^21 + a^11 x^20 + a^229 x^19 + a^149 x^18 + a^147 x^17 + a^123 x^16 + a^213 x^15 + a^40 x^14 + a^115 x^13 + a^6 x^12 + a^200 x^11 + a^100 x^10 + a^26 x^9 + a^246 x^8 + a^182 x^7 + a^218 x^6 + a^127 x^5 + a^215 x^4 + a^36 x^3 + a^186 x^2 + a^110 x^1 + a^106
63: x^63 + a^30 x^62 + a^71 x^61 + a^36 x^60 + a^71 x^59 + a^19 x^58 + a^195 x^57 + a^172 x^56 + a^110 x^55 + a^61 x^54 + a^2 x^53 + a^169 x^52 + a^194 x^51 + a^90 x^50 + a^136 x^49 + a^59 x^48 + a^182 x^47 + a^231 x^46 + a^145 x^45 + a^102 x^44 + a^39 x^43 + a^170 x^42 + a^231 x^41 + a^214 x^40 + a^67 x^39 + a^196 x^38 + a^207 x^37 + a^53 x^36 + a^112 x^35 + a^246 x^34 + a^90 x^33 + a^90 x^32 + a^121 x^31 + a^183 x^30 + a^146 x^29 + a^74 x^28 + a^77 x^27 + a^38 x^26 + a^89 x^25 + a^22 x^24 + a^231 x^23 + a^55 x^22 + a^56 x^21 + a^242 x^20 + a^112 x^19 + a^217 x^18 + a^110 x^17 + a^123 x^16 + a^62 x^15 + a^201 x^14 + a^217 x^13 + a^128 x^12 + a^165 x^11 + a^60 x^10 + a^181 x^9 + a^37 x^8 + a^161 x^7 + a^246 x^6 + a^132 x^5 + a^246 x^4 + a^18 x^3 + a^115 x^2 + a^136 x^1 + a^168
64: x^64 + a^45 x^63 + a^51 x^62 + a^175 x^61 + a^9 x^60 + a^7 x^59 + a^158 x^58 + a^159 x^57 + a^49 x^56 + a^68 x^55 + a^119 x^54 + a^92 x^53 + a^123 x^52 + a^177 x^51 + a^204 x^50 + a^187 x^49 + a^254 x^48 + a^200 x^47 + a^78 x^46 + a^141 x^45 + a^149 x^44 + a^119 x^43 + a^26 x^42 + a^127 x^41 + a^53 x^40 + a^160 x^39 + a^93 x^38 + a^199 x^37 + a^212 x^36 + a^29 x^35 + a^24 x^34 + a^145 x^33 + a^156 x^32 + a^208 x^31 + a^150 x^30 + a^218 x^29 + a^209 x^28 + a^4 x^27 + a^216 x^26 + a^91 x^25 + a^47 x^24 + a^184 x^23 + a^146 x^22 + a^47 x^21 + a^140 x^20 + a^195 x^19 + a^195 x^18 + a^125 x^17 + a^242 x^16 + a^238 x^15 + a^63 x^14 + a^99 x^13 + a^108 x^12 + a^140 x^11 + a^230 x^10 + a^242 x^9 + a^31 x^8 + a^204 x^7 + a^11 x^6 + a^178 x^5 + a^243 x^4 + a^217 x^3 + a^156 x^2 + a^213 x^1 + a^231
65: x^65 + a^137 x^64 + a^158 x^63 + a^247 x^62 + a^240 x^61 + a^37 x^60 + a^238 x^59 + a^214 x^58 + a^128 x^57 + a^99 x^56 + a^218 x^55 + a^46 x^54 + a^138 x^53 + a^198 x^52 + a^128 x^51 + a^92 x^50 + a^219 x^49 + a^109 x^48 + a^139 x^47 + a^166 x^46 + a^25 x^45 + a^66 x^44 + a^67 x^43 + a^14 x^42 + a^58 x^41 + a^238 x^40 + a^149 x^39 + a^177 x^38 + a^195 x^37 + a^221 x^36 + a^154 x^35 + a^171 x^34 + a^48 x^33 + a^80 x^32 + a^12 x^31 + a^59 x^30 + a^190 x^29 + a^228 x^28 + a^19 x^27 + a^55 x^26 + a^208 x^25 + a^92 x^24 + a^112 x^23 + a^229 x^22 + a^37 x^21 + a^60 x^20 + a^10 x^19 + a^47 x^18 + a^81 x^17 + a^0 x^16 + a^192 x^15 + a^37 x^14 + a^171 x^13 + a^175 x^12 + a^147 x^11 + a^128 x^10 + a^73 x^9 + a^166 x^8 + a^61 x^7 + a^149 x^6 + a^12 x^5 + a^24 x^4 + a^95 x^3 + a^70 x^2 + a^113 x^1 + a^40
66: x^66 + a^5 x^65 + a^118 x^64 + a^222 x^63 + a^180 x^62 + a^136 x^61 + a^136 x^60 + a^162 x^59 + a^51 x^58 + a^46 x^57 + a^117 x^56 + a^13 x^55 + a^215 x^54 + a^81 x^53 + a^17 x^52 + a^139 x^51 + a^247 x^50 + a^197 x^49 + a^171 x^48 + a^95 x^47 + a^173 x^46 + a^65 x^45 + a^137 x^44 + a^178 x^43 + a^68 x^42 + a^111 x^41 + a^95 x^40 + a^101 x^39 + a^41 x^38 + a^72 x^37 + a^214 x^36 + a^169 x^35 + a^197 x^34 + a^95 x^33 + a^7 x^32 + a^44 x^31 + a^154 x^30 + a^77 x^29 + a^111 x^28 + a^236 x^27 + a^40 x^26 + a^121 x^25 + a^143 x^24 + a^63 x^23 + a^87 x^22 + a^80 x^21 + a^253 x^20 + a^240 x^19 + a^126 x^18 + a^217 x^17 + a^77 x^16 + a^34 x^15 + a^232 x^14 + a^106 x^13 + a^50 x^12 + a^168 x^11 + a^82 x^10 + a^76 x^9 + a^146 x^8 + a^67 x^7 + a^106 x^6 + a^171 x^5 + a^25 x^4 + a^132 x^3 + a^93 x^2 + a^45 x^1 + a^105
67: x^67 + a^191 x^66 + a^172 x^65 + a^113 x^64 + a^86 x^63 + a^7 x^62 + a^166 x^61 + a^246 x^60 + a^185 x^59 + a^155 x^58 + a^250 x^57 + a^98 x^56 + a^113 x^55 + a^89 x^54 + a^86 x^53 + a^214 x^52 + a^225 x^51 + a^156 x^50 + a^190 x^49 + a^58 x^48 + a^33 x^47 + a^144 x^46 + a^67 x^45 + a^179 x^44 + a^163 x^43 + a^52 x^42 + a^154 x^41 + a^233 x^40 + a^151 x^39 + a^104 x^38 + a^251 x^37 + a^160 x^36 + a^126 x^35 + a^175 x^34 + a^208 x^33 + a^225 x^32 + a^70 x^31 + a^227 x^30 + a^146 x^29 + a^4 x^28 + a^152 x^27 + a^139 x^26 + a^103 x^25 + a^25 x^24 + a^107 x^23 + a^61 x^22 + a^204 x^21 + a^159 x^20 + a^250 x^19 + a^193 x^18 + a^225 x^17 + a^105 x^16 + a^160 x^15 + a^98 x^14 + a^167 x^13 + a^2 x^12 + a^53 x^11 + a^16 x^10 + a^242 x^9 + a^83 x^8 + a^210 x^7 + a^196 x^6 + a^103 x^5 + a^248 x^4 + a^86 x^3 + a^211 x^2 + a^41 x^1 + a^171
68: x^68 + a^247 x^67 + a^159 x^66 + a^223 x^65 + a^33 x^64 + a^224 x^63 + a^93 x^62 + a^77 x^61 + a^70 x^60 + a^90 x^59 + a^160 x^58 + a^32 x^57 + a^254 x^56 + a^43 x^55 + a^150 x^54 + a^84 x^53 + a^101 x^52 + a^190 x^51 + a^205 x^50 + a^133 x^49 + a^52 x^48 + a^60 x^47 + a^202 x^46 + a^165 x^45 + a^220 x^44 + a^203 x^43 + a^151 x^42 + a^93 x^41 + a^84 x^40 + a^15 x^39 + a^84 x^38 + a^253 x^37 + a^173 x^36 + a^160 x^35 + a^89 x^34 + a^227 x^33 + a^52 x^32 + a^199 x^31 + a^97 x^30 + a^95 x^29 + a^231 x^28 + a^52 x^27 + a^177 x^26 + a^41 x^25 + a^125 x^24 + a^137 x^23 + a^241 x^22 + a^166 x^21 + a^225 x^20 + a^118 x^19 + a^2 x^18 + a^54 x^17 + a^32 x^16 + a^82 x^15 + a^215 x^14 + a^175 x^13 + a^198 x^12 + a^43 x^11 + a^238 x^10 + a^235 x^9 + a^27 x^8 + a^101 x^7 + a^184 x^6 + a^127 x^5 + a^3 x^4 + a^5 x^3 + a^8 x^2 + a^163 x^1 + a^238

実行結果(後半:係数の指数)
係数の指数
 1:   0,   0
 2:   0,  25,   1
 3:   0, 198, 199,   3
 4:   0,  75, 249,  78,   6
 5:   0, 113, 164, 166, 119,  10
 6:   0, 166,   0, 134,   5, 176,  15
 7:   0,  87, 229, 146, 149, 238, 102,  21
 8:   0, 175, 238, 208, 249, 215, 252, 196,  28
 9:   0,  95, 246, 137, 231, 235, 149,  11, 123,  36
10:   0, 251,  67,  46,  61, 118,  70,  64,  94,  32,  45
11:   0, 220, 192,  91, 194, 172, 177, 209, 116, 227,  10,  55
12:   0, 102,  43,  98, 121, 187, 113, 198, 143, 131,  87, 157,  66
13:   0,  74, 152, 176, 100,  86, 100, 106, 104, 130, 218, 206, 140,  78
14:   0, 199, 249, 155,  48, 190, 124, 218, 137, 216,  87, 207,  59,  22,  91
15:   0,   8, 183,  61,  91, 202,  37,  51,  58,  58, 237, 140, 124,   5,  99, 105
16:   0, 120, 104, 107, 109, 102, 161,  76,   3,  91, 191, 147, 169, 182, 194, 225, 120
17:   0,  43, 139, 206,  78,  43, 239, 123, 206, 214, 147,  24,  99, 150,  39, 243, 163, 136
18:   0, 215, 234, 158,  94, 184,  97, 118, 170,  79, 187, 152, 148, 252, 179,   5,  98,  96, 153
19:   0,  67,   3, 105, 153,  52,  90,  83,  17, 150, 159,  44, 128, 153, 133, 252, 222, 138, 220, 171
20:   0,  17,  60,  79,  50,  61, 163,  26, 187, 202, 180, 221, 225,  83, 239, 156, 164, 212, 212, 188, 190
21:   0, 240, 233, 104, 247, 181, 140,  67,  98,  85, 200, 210, 115, 148, 137, 230,  36, 122, 254, 148, 175, 210
22:   0, 210, 171, 247, 242,  93, 230,  14, 109, 221,  53, 200,  74,   8, 172,  98,  80, 219, 134, 160, 105, 165, 231
23:   0, 171, 102, 146,  91,  49, 103,  65,  17, 193, 150,  14,  25, 183, 248,  94, 164, 224, 192,   1,  78,  56, 147, 253
24:   0, 229, 121, 135,  48, 211, 117, 251, 126, 159, 180, 169, 152, 192, 226, 228, 218, 111,   0, 117, 232,  87,  96, 227,  21
25:   0, 231, 181, 156,  39, 170,  26,  12,  59,  15, 148, 201,  54,  66, 237, 208,  99, 167, 144, 182,  95, 243, 129, 178, 252,  45
26:   0, 173, 125, 158,   2, 103, 182, 118,  17, 145, 201, 111,  28, 165,  53, 161,  21, 245, 142,  13, 102,  48, 227, 153, 145, 218,  70
27:   0,  79, 228,   8, 165, 227,  21, 180,  29,   9, 237,  70,  99,  45,  58, 138, 135,  73, 126, 172,  94, 216, 193, 157,  26,  17, 149,  96
28:   0, 168, 223, 200, 104, 224, 234, 108, 180, 110, 190, 195, 147, 205,  27, 232, 201,  21,  43, 245,  87,  42, 195, 212, 119, 242,  37,   9, 123
29:   0, 156,  45, 183,  29, 151, 219,  54,  96, 249,  24, 136,   5, 241, 175, 189,  28,  75, 234, 150, 148,  23,   9, 202, 162,  68, 250, 140,  24, 151
30:   0,  41, 173, 145, 152, 216,  31, 179, 182,  50,  48, 110,  86, 239,  96, 222, 125,  42, 173, 226, 193, 224, 130, 156,  37, 251, 216, 238,  40, 192, 180
31:   0,  20,  37, 252,  93,  63,  75, 225,  31, 115,  83, 113,  39,  44,  73, 122, 137, 118, 119, 144, 248, 248,  55,   1, 225, 105, 123, 183, 117, 187, 200, 210
32:   0,  10,   6, 106, 190, 249, 167,   4,  67, 209, 138, 138,  32, 242, 123,  89,  27, 120, 185,  80, 156,  38,  69, 171,  60,  28, 222,  80,  52, 254, 185, 220, 241
33:   0, 245, 231,  55,  24,  71,  78,  76,  81, 225, 212, 173,  37, 215,  46, 119, 229, 245, 167, 126,  72, 181,  94, 165, 210,  98, 125, 159, 184, 169, 232, 185, 231,  18
34:   0, 111,  77, 146,  94,  26,  21, 108,  19, 105,  94, 113, 193,  86, 140, 163, 125,  58, 158, 229, 239, 218, 103,  56,  70, 114,  61, 183, 129, 167,  13,  98,  62, 129,  51
35:   0,   7,  94, 143,  81, 247, 127, 202, 202, 194, 125, 146,  29, 138, 162, 153,  65, 105, 122, 116, 238,  26,  36, 216, 112, 125, 228,  15,  49,   8, 162,  30, 126, 111,  58,  85
36:   0, 200, 183,  98,  16, 172,  31, 246, 234,  60, 152, 115,   0, 167, 152, 113, 248, 238, 107,  18,  63, 218,  37,  87, 210, 105, 177, 120,  74, 121, 196, 117, 251, 113, 233,  30, 120
37:   0, 154,  75, 141, 180,  61, 165, 104, 232,  46, 227,  96, 178,  92, 135,  57, 162, 120, 194, 212, 174, 252, 183,  42,  35, 157, 111,  23, 133, 100,   8, 105,  37, 192, 189, 159,  19, 156
38:   0, 159,  34,  38, 228, 230,  59, 243,  95,  49, 218, 176, 164,  20,  65,  45, 111,  39,  81,  49, 118, 113, 222, 193, 250, 242, 168, 217,  41, 164, 247, 177,  30, 238,  18, 120, 153,  60, 193
39:   0,  81, 216, 174,  47, 200, 150,  59, 156,  89, 143,  89, 166, 183, 170, 152,  21, 165, 177, 113, 132, 234,   5, 154,  68, 124, 175, 196, 157, 249, 233,  83,  24, 153, 241, 126,  36, 116,  19, 231
40:   0,  59, 116,  79, 161, 252,  98, 128, 205, 128, 161, 247,  57, 163,  56, 235, 106,  53,  26, 187, 174, 226, 104, 170,   7, 175,  35, 181, 114,  88,  41,  47, 163, 125, 134,  72,  20, 232,  53,  35,  15
41:   0, 132, 167,  52, 139, 184, 223, 149,  92, 250,  18,  83,  33, 127, 109, 194,   7, 211, 242, 109,  66,  86, 169,  87,  96, 187, 159, 114, 172, 118, 208, 183, 200,  82, 179,  38,  39,  34, 242, 142, 147,  55
42:   0, 250, 103, 221, 230,  25,  18, 137, 231,   0,   3,  58, 242, 221, 191, 110,  84, 230,   8, 188, 106,  96, 147,  15, 131, 139,  34, 101, 223,  39, 101, 213, 199, 237, 254, 201, 123, 171, 162, 194, 117,  50,  96
43:   0,  96,  67,   3, 245, 217, 215,  33,  65, 240, 109, 144,  63,  21, 131,  38, 101, 153, 128,  55,  31, 237,   3,  94, 160,  20,  87,  77,  56, 191, 123, 207,  75,  82,   0, 122, 132, 101, 145, 215,  15, 121, 192, 138
44:   0, 190,   7,  61, 121,  71, 246,  69,  55, 168, 188,  89, 243, 191,  25,  72, 123,   9, 145,  14, 247,   1, 238,  44,  78, 143,  62, 224, 126, 118, 114,  68, 163,  52, 194, 217, 147, 204, 169,  37, 130, 113, 102,  73, 181
45:   0,   6, 172,  72, 250,  18, 171, 171, 162, 229, 187, 239,   4, 187,  11,  37, 228, 102,  72, 102,  22,  33,  73,  95,  99, 132,   1,  15,  89,   4, 112, 130,  95, 211, 235, 227,  58,  35,  88, 132,  23,  44, 165,  54, 187, 225
46:   0, 112,  94,  88, 112, 253, 224, 202, 115, 187,  99,  89,   5,  54, 113, 129,  44,  58,  16, 135, 216, 169, 211,  36,   1,   4,  96,  60, 241,  73, 104, 234,   8, 249, 245, 119, 174,  52,  25, 157, 224,  43, 202, 223,  19,  82,  15
47:   0,  76, 164, 229,  92,  79, 168, 219, 110, 104,  21, 220,  74,  19, 199, 195, 100,  93, 191,  43, 213,  72,  56, 138, 161, 125, 187, 119, 250, 189, 137, 190,  76, 126, 247,  93,  30, 132,   6,  58, 213, 208, 165, 224, 152, 133,  91,  61
48:   0, 228,  25, 196, 130, 211, 146,  60,  24, 251,  90,  39, 102, 240,  61, 178,  63,  46, 123, 115,  18, 221, 111, 135, 160, 182, 205, 107, 206,  95, 150, 120, 184,  91,  21, 247, 156, 140, 238, 191,  11,  94, 227,  84,  50, 163,  39,  34, 108
49:   0, 172, 121,   1,  41, 193, 222, 237,  64, 109, 181,  52, 120, 212, 226, 239, 245, 208,  20, 246,  34, 225, 204, 134, 101, 125, 206,  69, 138, 250,   0,  77,  58, 143, 185, 220, 254, 210, 190, 112,  88,  91,  57,  90, 109,   5,  13, 181,  25, 156
50:   0, 232, 125, 157, 161, 164,   9, 118,  46, 209,  99, 203, 193,  35,   3, 209, 111, 195, 242, 203, 225,  46,  13,  32, 160, 126, 209, 130, 160, 242, 215, 242,  75,  77,  42, 189,  32, 113,  65, 124,  69, 228, 114, 235, 175, 124, 170, 215, 232, 133, 205
51:   0, 213, 166, 142,  43,  10, 216, 141, 163, 172, 180, 102,  70,  89,  62, 222,  62,  42, 210, 151, 163, 218,  70,  77,  39, 166, 191, 114, 202, 245, 188, 183, 221,  75, 212,  27, 237, 127, 204, 235,  62, 190, 232,  18,  46, 171,  15,  98, 247,  66, 163,   0
52:   0, 116,  50,  86, 186,  50, 220, 251,  89, 192,  46,  86, 127, 124,  19, 184, 233, 151, 215,  22,  14,  59, 145,  37, 242, 203, 134, 254,  89, 190,  94,  59,  65, 124, 113, 100, 233, 235, 121,  22,  76,  86,  97,  39, 242, 200, 220, 101,  33, 239, 254, 116,  51
53:   0, 122, 214, 231, 136, 199,  11,   6, 205, 124,  72, 213, 117, 187,  60, 147, 201,  73,  75,  33, 146, 171, 247, 118, 208, 157, 177, 203, 235,  83,  45, 226, 202, 229, 168,   7,  57, 237, 235, 200, 124, 106, 254, 165,  14, 147,   0,  57,  42,  31, 178, 213, 173, 103
54:   0, 183,  26, 201,  87, 210, 221, 113,  21,  46,  65,  45,  50, 238, 184, 249, 225, 102,  58, 209, 218, 109, 165,  26,  95, 184, 192,  52, 245,  35, 254, 238, 175, 172,  79, 123,  25, 122,  43, 120, 108, 215,  80, 128, 201, 235,   8, 153,  59, 101,  31, 198,  76,  31, 156
55:   0,  38, 197, 123, 167,  16,  87, 178, 238, 227,  97, 148, 247,  26,  90, 228, 182, 236, 197,  47, 249,  36, 213,  54, 113, 181,  74, 177, 204, 155,  61,  47,  42,   0, 132, 144, 251, 200,  38,  38, 138,  54,  44,  64,  19,  22, 206,  16,  10, 228, 211, 161, 171,  44, 194, 210
56:   0, 106, 120, 107, 157, 164, 216, 112, 116,   2,  91, 248, 163,  36, 201, 202, 229,   6, 144, 254, 155, 135, 208, 170, 209,  12, 139, 127, 142, 182, 249, 177, 174, 190,  28,  10,  85, 239, 184, 101, 124, 152, 206,  96,  23, 163,  61,  27, 196, 247, 151, 154, 202, 207,  20,  61,  10
57:   0,  58, 140, 237,  93, 106,  61, 193,   2,  87,  73, 194, 215, 159, 163,  10, 155,   5, 121, 153,  59, 248,   4, 117,  22,  60, 177, 144,  44,  72, 228,  62,   1,  19, 170, 113, 158,  25, 175, 199, 139,  90,   1, 210,   7, 119, 154,  89, 159, 130, 122,  46, 147, 190, 135,  94,  68,  66
58:   0,  82, 116,  26, 247,  66,  27,  62, 107, 252, 182, 200, 185, 235,  55, 251, 242, 210, 144, 154, 237, 176, 141, 192, 248, 152, 249, 206,  85, 253, 142,  65, 165, 125,  23,  24,  30, 122, 240, 214,   6, 129, 218,  29, 145, 127, 134, 206, 245, 117,  29,  41,  63, 159, 142, 233, 125, 148, 123
59:   0,  57, 115, 232,  11, 195, 217,   3, 206,  77,  67,  29, 166, 180, 106, 118, 203,  17,  69, 152, 213,  74,  44,  49,  43,  98,  61, 253, 122,  14,  43, 209, 143,   9, 104, 107, 171, 224,  57, 254, 251, 226, 232, 221, 194, 240, 117, 161,  82, 178, 246, 178,  33,  50,  86, 215, 239, 180, 180, 181
60:   0, 107, 140,  26,  12,   9, 141, 243, 197, 226, 197, 219,  45, 211, 101, 219, 120,  28, 181, 127,   6, 100, 247,   2, 205, 198,  57, 115, 219, 101, 109, 160,  82,  37,  38, 238,  49, 160, 209, 121,  86,  11, 124,  30, 181,  84,  25, 194,  87,  65, 102, 190, 220,  70,  27, 209,  16,  89,   7,  33, 240
61:   0, 161, 244, 105, 115,  64,   9, 221, 236,  16, 145, 148,  34, 144, 186,  13,  20, 254, 246,  38,  35, 202,  72,   4, 212, 159, 211, 165, 135, 252, 250,  25,  87,  30, 120, 226, 234,  92, 199,  72,   7, 155, 218, 231,  44, 125, 178, 156, 174, 124,  43, 100,  31,  56, 101, 204,  64, 175, 225, 169, 146,  45
62:   0,  65, 202, 113,  98,  71, 223, 248, 118, 214,  94,   0, 122,  37,  23,   2, 228,  58, 121,   7, 105, 135,  78, 243, 118,  70,  76, 223,  89,  72,  50,  70, 111, 194,  17, 212, 126, 181,  35, 221, 117, 235,  11, 229, 149, 147, 123, 213,  40, 115,   6, 200, 100,  26, 246, 182, 218, 127, 215,  36, 186, 110, 106
63:   0,  30,  71,  36,  71,  19, 195, 172, 110,  61,   2, 169, 194,  90, 136,  59, 182, 231, 145, 102,  39, 170, 231, 214,  67, 196, 207,  53, 112, 246,  90,  90, 121, 183, 146,  74,  77,  38,  89,  22, 231,  55,  56, 242, 112, 217, 110, 123,  62, 201, 217, 128, 165,  60, 181,  37, 161, 246, 132, 246,  18, 115, 136, 168
64:   0,  45,  51, 175,   9,   7, 158, 159,  49,  68, 119,  92, 123, 177, 204, 187, 254, 200,  78, 141, 149, 119,  26, 127,  53, 160,  93, 199, 212,  29,  24, 145, 156, 208, 150, 218, 209,   4, 216,  91,  47, 184, 146,  47, 140, 195, 195, 125, 242, 238,  63,  99, 108, 140, 230, 242,  31, 204,  11, 178, 243, 217, 156, 213, 231
65:   0, 137, 158, 247, 240,  37, 238, 214, 128,  99, 218,  46, 138, 198, 128,  92, 219, 109, 139, 166,  25,  66,  67,  14,  58, 238, 149, 177, 195, 221, 154, 171,  48,  80,  12,  59, 190, 228,  19,  55, 208,  92, 112, 229,  37,  60,  10,  47,  81,   0, 192,  37, 171, 175, 147, 128,  73, 166,  61, 149,  12,  24,  95,  70, 113,  40
66:   0,   5, 118, 222, 180, 136, 136, 162,  51,  46, 117,  13, 215,  81,  17, 139, 247, 197, 171,  95, 173,  65, 137, 178,  68, 111,  95, 101,  41,  72, 214, 169, 197,  95,   7,  44, 154,  77, 111, 236,  40, 121, 143,  63,  87,  80, 253, 240, 126, 217,  77,  34, 232, 106,  50, 168,  82,  76, 146,  67, 106, 171,  25, 132,  93,  45, 105
67:   0, 191, 172, 113,  86,   7, 166, 246, 185, 155, 250,  98, 113,  89,  86, 214, 225, 156, 190,  58,  33, 144,  67, 179, 163,  52, 154, 233, 151, 104, 251, 160, 126, 175, 208, 225,  70, 227, 146,   4, 152, 139, 103,  25, 107,  61, 204, 159, 250, 193, 225, 105, 160,  98, 167,   2,  53,  16, 242,  83, 210, 196, 103, 248,  86, 211,  41, 171
68:   0, 247, 159, 223,  33, 224,  93,  77,  70,  90, 160,  32, 254,  43, 150,  84, 101, 190, 205, 133,  52,  60, 202, 165, 220, 203, 151,  93,  84,  15,  84, 253, 173, 160,  89, 227,  52, 199,  97,  95, 231,  52, 177,  41, 125, 137, 241, 166, 225, 118,   2,  54,  32,  82, 215, 175, 198,  43, 238, 235,  27, 101, 184, 127,   3,   5,   8, 163, 238

生成多項式の係数 GF(28)

生成多項式の係数 $\alpha^n$ は、多項式

B \left( x \right) = x^8 + x^4 + x^3 + x^2 + 1 \\
\to 1\_00011101

での剰余($GF(2)$ 演算{})を用いて

\begin{eqnarray}
1 \equiv \alpha^0 \pmod{ B \left( \alpha \right) } & \to & 00000001 \\
\alpha \equiv \alpha^1 \pmod{ B \left( \alpha \right) } & \to & 00000010 \\
\alpha^2 \equiv \alpha^2 \pmod{ B \left( \alpha \right) } & \to & 00000100 \\
\cdots \\
\alpha^7 \equiv \alpha^7 \pmod{ B \left( \alpha \right) } & \to & 10000000 \\
( 00011101 & \leftarrow & 100000000 \oplus 100011101 ) \\
\alpha^4 + \alpha^3 + \alpha^2 + \alpha^0 \equiv \alpha^8 \pmod{ B \left( \alpha \right) } & \to & 00011101 \\
\alpha^5 + \alpha^4 + \alpha^3 + \alpha^1 \equiv \alpha^9 \pmod{ B \left( \alpha \right) } & \to & 00111010 \\
\alpha^6 + \alpha^5 + \alpha^4 + \alpha^2 \equiv \alpha^{10} \pmod{ B \left( \alpha \right) } & \to & 01110100 \\
\alpha^7 + \alpha^6 + \alpha^5 + \alpha^3 \equiv \alpha^{11} \pmod{ B \left( \alpha \right) } & \to & 11101000 \\
( 11001101 & \leftarrow & 111010000 \oplus 100011101 ) \\
\alpha^7 + \alpha^6 + \alpha^3 + \alpha^2 + \alpha^0 \equiv \alpha^{12} \pmod{ B \left( \alpha \right) } & \to & 11001101 \\
\cdots \\
\alpha^7 + \alpha^3 + \alpha^2 + \alpha^1 \equiv \alpha^{254} \pmod{ B \left( \alpha \right) } & \to &  10001110 \\
( 00000001 & \leftarrow & 100011100 \oplus 100011101 ) \\
1 \equiv \alpha^{0} \equiv \alpha^{255} \pmod{ B \left( \alpha \right) } & \to & 00000001 \\
\ \\
\alpha^n \pmod{ B \left( \alpha \right) } & \to & \left( 1 \ll n \right) \pmod{ 100011101 }
\end{eqnarray}

となっています。(指数 $n$ は左シフト数に相当)

算出した値 (プログラムの変数 ELEMENT)
10進数(ELEMENT)
  1,   2,   4,   8,  16,  32,  64, 128,  29,  58, 116, 232, 205, 135,  19,
 38,  76, 152,  45,  90, 180, 117, 234, 201, 143,   3,   6,  12,  24,  48,
 96, 192, 157,  39,  78, 156,  37,  74, 148,  53, 106, 212, 181, 119, 238,
193, 159,  35,  70, 140,   5,  10,  20,  40,  80, 160,  93, 186, 105, 210,
185, 111, 222, 161,  95, 190,  97, 194, 153,  47,  94, 188, 101, 202, 137,
 15,  30,  60, 120, 240, 253, 231, 211, 187, 107, 214, 177, 127, 254, 225,
223, 163,  91, 182, 113, 226, 217, 175,  67, 134,  17,  34,  68, 136,  13,
 26,  52, 104, 208, 189, 103, 206, 129,  31,  62, 124, 248, 237, 199, 147,
 59, 118, 236, 197, 151,  51, 102, 204, 133,  23,  46,  92, 184, 109, 218,
169,  79, 158,  33,  66, 132,  21,  42,  84, 168,  77, 154,  41,  82, 164,
 85, 170,  73, 146,  57, 114, 228, 213, 183, 115, 230, 209, 191,  99, 198,
145,  63, 126, 252, 229, 215, 179, 123, 246, 241, 255, 227, 219, 171,  75,
150,  49,  98, 196, 149,  55, 110, 220, 165,  87, 174,  65, 130,  25,  50,
100, 200, 141,   7,  14,  28,  56, 112, 224, 221, 167,  83, 166,  81, 162,
 89, 178, 121, 242, 249, 239, 195, 155,  43,  86, 172,  69, 138,   9,  18,
 36,  72, 144,  61, 122, 244, 245, 247, 243, 251, 235, 203, 139,  11,  22,
 44,  88, 176, 125, 250, 233, 207, 131,  27,  54, 108, 216, 173,  71, 142,
16進数(ELEMENT)
01, 02, 04, 08, 10, 20, 40, 80, 1d, 3a, 74, e8, cd, 87, 13,
26, 4c, 98, 2d, 5a, b4, 75, ea, c9, 8f, 03, 06, 0c, 18, 30,
60, c0, 9d, 27, 4e, 9c, 25, 4a, 94, 35, 6a, d4, b5, 77, ee,
c1, 9f, 23, 46, 8c, 05, 0a, 14, 28, 50, a0, 5d, ba, 69, d2,
b9, 6f, de, a1, 5f, be, 61, c2, 99, 2f, 5e, bc, 65, ca, 89,
0f, 1e, 3c, 78, f0, fd, e7, d3, bb, 6b, d6, b1, 7f, fe, e1,
df, a3, 5b, b6, 71, e2, d9, af, 43, 86, 11, 22, 44, 88, 0d,
1a, 34, 68, d0, bd, 67, ce, 81, 1f, 3e, 7c, f8, ed, c7, 93,
3b, 76, ec, c5, 97, 33, 66, cc, 85, 17, 2e, 5c, b8, 6d, da,
a9, 4f, 9e, 21, 42, 84, 15, 2a, 54, a8, 4d, 9a, 29, 52, a4,
55, aa, 49, 92, 39, 72, e4, d5, b7, 73, e6, d1, bf, 63, c6,
91, 3f, 7e, fc, e5, d7, b3, 7b, f6, f1, ff, e3, db, ab, 4b,
96, 31, 62, c4, 95, 37, 6e, dc, a5, 57, ae, 41, 82, 19, 32,
64, c8, 8d, 07, 0e, 1c, 38, 70, e0, dd, a7, 53, a6, 51, a2,
59, b2, 79, f2, f9, ef, c3, 9b, 2b, 56, ac, 45, 8a, 09, 12,
24, 48, 90, 3d, 7a, f4, f5, f7, f3, fb, eb, cb, 8b, 0b, 16,
2c, 58, b0, 7d, fa, e9, cf, 83, 1b, 36, 6c, d8, ad, 47, 8e,

生成多項式を求める

誤り訂正コード語数 $\left( m = n - 1 \right)$ に対して、生成多項式 $G_n \left( x \right)$ は

\begin{eqnarray}
G_1 \left( x \right) & = & x - 1 \\
G_2 \left( x \right) & = & \left( x - 1 \right) \left( x - \alpha \right) \\
G_3 \left( x \right) & = & \left( x - 1 \right) \left( x - \alpha \right) \left( x - \alpha^2 \right) \\
\cdots \\
\ \\
G_n \left( x \right) & = & \prod_{k=0}^{n-1} \left( x - \alpha^k \right) \\
\end{eqnarray}

となっています。

ここから、$GF \left( 2^8 \right)$ での加減算は排他的論理和(XOR)だから($\alpha = - \alpha$)となるので、マイナス記号をプラスに変更して考えます。

各項の係数を全て $\alpha^n$ 形式にして展開すると

\begin{eqnarray}
G_1 \left( x \right) & = & \alpha^0 x + \alpha^0 \\
 & \to & \left( 0, 0 \right) \\
G_2 \left( x \right) & = & \left( \alpha^0 x + \alpha^0 \right) \left( \alpha^0 x + \alpha^1 \right) \\
 & = & \alpha^0 x^2 + \left( \alpha^1 + \alpha^0 \right) x + \alpha^1 \\
 & = & \alpha^0 x^2 + \alpha^{25} x + \alpha^1 \\
 & \to & \left( 0, 25, 1 \right) \\
G_3 \left( x \right) & = & \left( \alpha^0 x + \alpha^1 \right) \left( \alpha^0 x + \alpha^1 \right) \left( \alpha^0 x + \alpha^2 \right) \\
 & = & \left( \alpha^0 x^2 + \alpha^{25} x + \alpha^1 \right) \left( \alpha^0 x + \alpha^2 \right) \\
 & = & \alpha^0 x^3 + \left( \alpha^{25} + \alpha^2 \right) x^2 + \left( \alpha^{25+2} + \alpha^1 \right) x + \alpha^{1+2} \\
 & = & \alpha^0 x^3 + \alpha^{198} x^2 + \alpha^{199} x + \alpha^3 \\
 & \to & \left( 0, 198, 199, 3 \right) \\
\cdots \\
\end{eqnarray}

指数の配列だけで処理できます。

$\left( \alpha^x + \alpha^y = \alpha^z \right)$ の $z$ は

Python
z = EXPONENT[ELEMENT[x] ^ ELEMENT[y]]

で求められます。

注意:ここでは $\left( \alpha^x + \alpha^y \ne 0 \right)$ なので z が None になりませんが、他所ではありえます($x=y$ の場合)

あとは、(0, 0) を用意して、順次 $\left( x + \alpha^k \right)$ を掛ける計算の繰り返しです。


「QRコード」はデンソーウェーブの登録商標です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0