Update README.md

main
pski7ehva 3 months ago
parent 185c0eeee0
commit c446b4be4b

@ -1,2 +1,43 @@
# zwf
import random
from sympy import GF, symbols, primerange
from sympy.polys.galoistools import gf_irreducible_p
from sympy.polys.domains import FF
# 步骤1随机选择素数p和整数n
# 生成2到10之间的素数列表
primes = list(primerange(2, 10))
# 随机选择素数p
p = random.choice(primes)
# 随机选择3到10之间的整数n
n = random.randint(3, 10)
# 步骤2在F_p上寻找一个n次的不可约多项式p(x)
x = symbols('x')
while True:
# 生成n+1个随机系数0到p-1之间
coeffs = [random.randint(0, p-1) for _ in range(n+1)]
# 确保首项系数为1
coeffs[-1] = 1
# 检查多项式是否不可约
if gf_irreducible_p(coeffs, p, GF):
break
# 构造多项式表达式
p_poly = 0
for i, coeff in enumerate(coeffs):
p_poly += coeff * x**i
# 步骤3构造有限域F_{p^n}
# 使用多项式模运算表示元素
# 寻找生成元(生成元的寻找较为复杂,这里简化处理)
# 步骤4表示非零元素
# 使用多项式表示法
# 注意sympy的FF类不直接支持自定义模数的有限域构造
F_pn = FF(p**n, modulus=p_poly) # 概念性表示
# 输出结果
print(f"素数 p: {p}")
print(f"整数 n: {n}")
print(f"不可约多项式 p(x): {p_poly}")
print(f"有限域 F_{p}^{n} 的元素数量: {p**n}")
Loading…
Cancel
Save