/
ku11ch
/
Lab_2
Обзор
Документация
Войти
/
ku11ch
/
Lab_2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task1.py
99 строк
3 KB
ku11ch
upload files
14 окт 2025, 10:46
14 окт 2025, 10:46
8a1e0cb
Код
Авторство
О чём код?
# tables_and_primitives.py # Построение таблиц и поиск примитивных элементов from gf8_library import GF8 def build_addition_table(gf): """Построение таблицы сложения""" elements = gf.get_all_elements() print("=== Таблица сложения GF(2³) ===") print(" + |", end="") for i in elements: print(f" {i:03b} ", end="") print("\n " + "---+" * (len(elements) + 1)) for a in elements: print(f" {a:03b}|", end="") for b in elements: result = gf.add(a, b) print(f" {result:03b} ", end="") print() def build_multiplication_table(gf): """Построение таблицы умножения""" elements = gf.get_all_elements() print("\n=== Таблица умножения GF(2³) ===") print(" × |", end="") for i in elements: print(f" {i:03b} ", end="") print("\n " + "---+" * (len(elements) + 1)) for a in elements: print(f" {a:03b}|", end="") for b in elements: result = gf.mul(a, b) print(f" {result:03b} ", end="") print() def find_primitive_elements(gf): """Поиск всех примитивных элементов""" primitive_elements = [] print("\n=== Поиск примитивных элементов ===") for candidate in range(1, 8): # проверяем ненулевые элементы if gf.is_primitive(candidate): primitive_elements.append(candidate) print("Примитивные элементы:") for elem in primitive_elements: powers = [] current = elem for i in range(1, 8): powers.append(f"α^{i}={current:03b}") current = gf.mul(current, elem) print(f" {elem:03b} = {gf.to_poly_str(elem)}") print(f" Степени: {', '.join(powers)}") return primitive_elements def build_power_table(gf): """Построение таблицы степеней примитивного элемента""" alpha = gf.alpha # α = x = 0b010 print("\n=== Таблица степеней примитивного элемента α ===") print(" i | α^i | Полином") print(" ---+-----+----------------") for i in range(8): if i == 0: power = 1 else: power = gf.pow(alpha, i) print(f" {i} | {power:03b} | {gf.to_poly_str(power)}") def main(): gf = GF8() # Построение таблиц build_addition_table(gf) build_multiplication_table(gf) # Поиск примитивных элементов primitives = find_primitive_elements(gf) # Таблица степеней build_power_table(gf) print(f"\nВсего примитивных элементов: {len(primitives)}") if __name__ == "__main__": main()