Недавно прочитал эту статью и подумал об этом, увидев ваш вопрос, надеюсь, это поможет ..: oÞ
Учитывая примитивный многочлен над GF (q), можно получить другой примитивный многочлен, прореживая последовательность LFSR, полученную из исходного многочлена. Это продемонстрировано в коде ниже.
K: = GF (7);
C: = примитивный полином (K, 2);
C;
D ^ 2 + 6 * D + 3
Чтобы сгенерировать последовательность LFSR, мы должны сначала умножить этот многочлен на подходящую константу, чтобы конечный коэффициент стал равным 1.
C: = C * Коэффициент (C, 0) ^ - 1;
C;
5 * D ^ 2 + 2 * D + 1
Теперь мы можем сгенерировать LFSR-последовательность длиной 72-1. Начальное состояние может быть любым, кроме [0, 0].
t: = LFSRSequence (C, [K | 1,1], 48);
т;
[1, 1, 0, 2, 3, 5, 3, 4, 5, 5, 0, 3, 1, 4, 1, 6, 4, 4, 0, 1, 5, 6, 5, 2, 6 6,
0, 5, 4, 2, 4, 3, 2, 2, 0, 4, 6, 3, 6, 1, 3, 3, 0, 6, 2, 1, 2, 5]
Мы прореживаем последовательность значением d, имеющим свойство gcd (d, 48) = 1.
t: = прореживание (t, 1, 5);
т;
[1, 5, 0, 6, 5, 6, 4, 4, 3, 1, 0, 4, 1, 4, 5, 5, 2, 3, 0, 5, 3, 5, 1, 1, 6 , 2,
0, 1, 2, 1, 3, 3, 4, 6, 0, 3, 6, 3, 2, 2, 5, 4, 0, 2, 4, 2, 6, 6]
B: = BerlekampMassey (т);
B;
3 * Д ^ 2 + 5 * Д + 1
Чтобы получить соответствующий примитивный многочлен, мы умножаем на константу, чтобы сделать ее моничной.
B: = B * Коэффициент (B, 2) ^ - 1;
B;
D ^ 2 + 4 * D + 5
IsPrimitive (В);
правда