收藏 分享(赏)

不可约多项式 本源多项式.docx

上传人:wspkg9802 文档编号:6333087 上传时间:2019-04-07 格式:DOCX 页数:6 大小:256.54KB
下载 相关 举报
不可约多项式 本源多项式.docx_第1页
第1页 / 共6页
不可约多项式 本源多项式.docx_第2页
第2页 / 共6页
不可约多项式 本源多项式.docx_第3页
第3页 / 共6页
不可约多项式 本源多项式.docx_第4页
第4页 / 共6页
不可约多项式 本源多项式.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、有限域第一次大作业一、实验内容(1 )构造有限域 .20F(2 )找到有限域 上的任意元素的极小多项式;20(3 )找到 上的一个本原多项式。二、算法设计(1 )我们知道有限域 的表达有三种形式: , 为nqFpiqqF的根; ;qhxi,q pxfxnf的 次 不 可 约 多 项 式;在这里我们主要通过找到 上的一个i0,qq为 上 的 一 个 生 成 元 2次可约多项式来构造有限域 ,并进行相应的运算。由于只要找到一个 上的不可220FF约多项式,我们采用的算法: 随机生成一个 次 上的多项式, 判断多项式为不a20Fb可约的, 代码见附录 ;通过 我们得到了一个 次的不可约多项式 ,则p

2、ari1pri (x)f即为我们想要的有限域,在这有限域上可以直接进行相应的代数运算,2(x)Ff代码见附录 ;pari2(2 )找到有限域 上的任意元素 的极小多项式 的思路20Ffx第一步:通过元素 的共轭元个数来判断极小多项式 的次数;第二步:通过 的共轭元生成极小多项式 ;fx第三步:进一步判断该元素 是否为本原元,若是,则生成的极小多项式 就是 上fx2F的本原多项式。代码见附录 ;pari3(3 )由于上述方法(2)生成的极小多项式不一定是本原多项式,因此,我们还给出一个能找到上的本原多项式的方法,该方法也是基于随机生成多项式并判断是否为本原多项式,我们知道一个 次不可约多项式 是

3、本原多项式的条件是其周期达到最大 ,由nfx 1np于 ,所以只要 时,若 ,1npfx 1nkp |fx1 ,nipik则 就是本原多项式,所用的算法思路如下f第一步:随机产生一个 上的 次多项式 ;2F0fx第二步:利用方法一判断该多项式 是否为不可约的;f第三步:进一步判断该多项式 是否为本原多项式。x代码见附录 ;pari4三、实验结果(1 )第一问产生的不可约多项式我们选择 作为我们的所要的不可约多项式201981436+fxxx第一问有限域上元素的运算(2 )第二问中产生的极小多项式(3 )第三问中产生的本原多项式附录:(1 ) *找到20次不可约多项式 *find_irreduc

4、ible_polynomial (p,deg)=a=1;while(a,px=xdeg;for(i=2,deg,px+=random(p)*x(i-1););/随机产生一个F2上的20次多项式px+=1;fx=px*Mod(1,p);res=lift(fx);if(polisirreducible(fx)=1,print(res);a=0;);)/若多项式是不可约的,则输出并 /停止循环(2) *构造有限域F220并进行运算*create_a_finite_filied (fx, fx1, fx2)= /fx为F2上的20次不可约多项式,fx1及pol_Mod=Mod(1,2)*fx; fx2

5、 为F2 上的次数小于20的多项式,即gg1=fx1*Mod(1,2); 为有限域F220 里的元素gg2=fx2*Mod(1,2);rest=lift(lift(Mod(gg1*gg2,pol_Mod); /F220里的元素进行乘法运算rest1=lift(lift(Mod(gg1+gg2,pol_Mod); /F220里的元素进行加法运算rest2=lift(lift(Mod(gg1-gg2,pol_Mod); /F220里的元素进行减法运算rest3=lift(lift(Mod(gg1/gg2,pol_Mod); /F220里的元素进行除法运算print(“fx1*fx2=“,rest)

6、;print(“fx1+fx2=“,rest1); /输出所有的元素运算的结果print(“fx1/fx2=“,rest2);print(“fx1/fx2=“,rest3);(3)*找到任意元素的极小多项式并判断是否为本原多项式*find_a_minimal_polynomial (fy, fy1)= /fy为F2上是不可约多项式,Fy1为域F220 pol_Mod=Mod(1,2)*fy; 上任意一个元素gg1=fy1*Mod(1,2);tty=Mod(gg1,pol_Mod); /将多项式Fy1转化为域F220上的元素n=2(20)-1;fa_table=factorint(220-1),

7、1; /将220-1 分解得到其素因子fa_leath= #fa_table; /找到 220-1的素因子的个数ppx=1;for(i=1,20,res = tty(2(i-1);ppx*=(x-res);if(i1););/用元素的共轭元判断极小多项式的次数并生成极小多项式res=lift(lift(ppx);print(“fx=“res); /输出极小多项式for(j=1,fa_leath,if(tty(n/fa_tablej)=1,print(“fx is not primitive polynomial “);return;););/用元素的阶判断极小多项式的周期并判断出元素是否为本原

8、元及多项式是否为本原多项式print(“fx is primitive polynomial“);/输出本原多项式(4) *找到f220上的本原多项式*find_a_primitive_polynomial (p,deg,fx)= /p为任意素数,deg是想找本原多项pol_Mod=fx*Mod(1,2); 式的次数,fx为F2上的20次不可约a=1; 多项式while(a,px=xdeg;for(i=2,deg,px+=random(p)*x(i-1);); /随机生成一个多项式px+=1;fx=px*Mod(1,p);res=lift(fx);if(polisirreducible(res)=1, /判断多项式是否为不可约的n=pdeg-1; fa_table=factorint(n),1; fa_leath=#fa_table; tty=tty=Mod(res,pol_Mod); /将多项式Fy1转化为域F220上的元素j=1;flot=1;while(j=fa_leath,if(tty(n/fa_tablej)=1,flot=0;break;);j+;); /不是本原if(flot=1,print(“fx is primitive polynomial fx=“,res);a=0;););); /是本原多项式并输出

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报