扩展欧几里得算法多项式互素.docVIP

  • 51
  • 0
  • 约4.76千字
  • 约 8页
  • 2017-11-16 发布于江苏
  • 举报
扩展欧几里得算法多项式互素

这个程序实现对以个多项式的各种操作,包括:从控制台读入多项式,检查多项式的合法性,多项式的存储与输出显示,多项式的加法,减法,乘法,除法。完成多项式技术后,将其运用到多项式的扩展欧几里得算法中,实现对两个多项式寻找到使u(x)f(x)+v(x)g(x)=1成立的v(x),u(x); 以下是多项式程序。 #includeiostream using namespace std; #define MaxDXS 200 struct DXS{ int n; double xi[MaxDXS+1]; }; int max(int a,int b) { if(ab) return a; return b; } int check(DXS a) { while(a.n0 a.xi[a.n]==0) a.n--; return 0; } int show(DXS a)//find a problem in show; { if(a.xi[a.n]==1) { if(a.n==0) cout1; } else if(a.xi[a.n]==-1) cout-; else couta.xi[a.n]; if(a.n1) coutX^a.n; if(a.n==1) coutX; for(int i=a.n-1; i=0; i--) { if(a.xi[i]0) { if(a.xi[i]!=1) cout+a.xi[i]; else if(i==0) cout+1; else cout+; if(i1) coutX^i; if(i==1) coutX; } else if(a.xi[i]0) { if(a.xi[i]!=-1) couta.xi[i]; else if(i==0) cout-1; else cout-; if(i1) coutX^i; if(i==1) coutX; } } return 0; } bool GetDXS(DXS a) { char s[MaxDXS*10]; DXS tmp={NULL}; cins; char lst=[; double xi=0; int zhi=0; int i=0; int len=strlen(s); s[len]=+,s[len+1]=\0; while(s[i]!=\0) { if(s[i]=0 s[i]=9) { double num=0,dotcnt=1; bool isdot=false; while(s[i]=0 s[i]=9 || s[i]==. ) { if(s[i]==.) { if(isdot) { cout小数点输入错误!endl; return false; }else{ isdot=true; dotcnt=1; } }else { if(isdot) dotcnt*=0.1; num=num*10+(s[i]-0); } num=num*dotcnt; i++; } if(lst==+ || lst==[) xi=num; //xi else if(lst==-|| lst==[) xi=-num;//-xi else if(lst==^)//zhi { if(isdot) { cout多项式的指数必须是正整数!endl; return false; } zhi=int(num); if(zhi=100) { cout你的多项式输入次数太大了!endl; return false; } } else { cout你的输入有问题!endl; return false; } i--; }else if(s[i]==x || s[i]==X) { if(lst==+ || lst==[) xi=1; else if(lst==-) xi=-1; else if(lst=0 lst=9) { } else { cout你的输入有误!endl; return false; } }else if(s[i]==^) { if(lst==x

文档评论(0)

1亿VIP精品文档

相关文档