ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:14.73KB ,
资源ID:2711685      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2711685.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多项式辗转相除法求最大公因式.doc)为本站会员(weiwoduzun)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

多项式辗转相除法求最大公因式.doc

1、#include#include#includestruct chain /定义一个多项式的结构体int n; /该多项式的最高次数double *an; /存放多项式的系数;void creat_chain(struct chain *c) /建立一个多项式int i,n;double ai;printf(“请输入该多项式最高次数:“);scanf(“%d“,(*c).n = n;(*c).an = (double *)calloc(n+1,sizeof(double); /给该多项式系数动态分配内存printf(“按下列格式输入系数:(例如 x4 + 2x3 - 7x1 + 5 输入:1

2、2 0 -7 5)n“);printf(“等待输入:“);for(i=n;i=0;i-)scanf(“%lf“,(*c).ani = ai;void show(struct chain c) /按照多项式的格式显示多项式int i=c.n;printf(“多项式是:“);while(i=0)if(i!=c.n)switch(i)case 1:printf(“%.2lfX“,c.ani);break;case 0:printf(“%.2lf“,c.ani);break;default:printf(“%.2lfX%d“,c.ani,i);break;i-;printf(“n“);void do_

3、add(struct chain *ch,struct chain ch1,struct chain ch2) /两个多项式求和int i;if(ch1.n=ch2.n)(*ch).n = ch1.n; /求和之后多项式的最高次应是 ch1 和 ch2 中较高的次数(*ch).an = (double *)calloc(*ch).n+1,sizeof(double);for(i=0;i=0) /依次从高次项向低次项进行系数检验i-;(*r).n = i; /注意:如果多项式 r 为 0,这里 i=-1bool check_zero(struct chain r) /检验多项式 r 的最高次数i

4、nt i;for(i=0;i=1e-6) /如果一旦有一个不为零,返回 falsereturn false;return true; /全为零的情况下返回 truevoid do_div(struct chain ch1,struct chain ch2) /辗转相除法,公式:ch1 = q*ch2+r;int i = 0,j;double tmp;struct chain q,r;if(check_zero(ch2) /判断所除的多项式是否为 0,若为 0,退出;printf(“所除的多项式不能为 0!n“);exit(0);q.n = ch1.n - ch2.n; /q 的最高次数为 ch

5、1 和 ch2 最高次数相减r.n = ch1.n - 1;r.an = (double *)calloc(r.n+1,sizeof(double); /为系数动态分配内存q.an = (double *)calloc(q.n+1,sizeof(double);while(i=0;j-)if(j=q.n-i)r.anj = ch1.anj - tmp*ch2.anj-q.n+i; /高次对应相减elser.anj = ch1.anj; /低次保留if(check_zero(r) break; /若余式 r 系数全为零,退出循环ch1 = r; /ch2 没除干净,将 r 赋给 ch1,继续除

6、ch2i+;printf(“-n“);printf(“q(x):“);show(q); /显示每一步的多项式 qprintf(“r(x):“);show(r); /显示每一步与 q 对应的多项式 rprintf(“-n“);check_change( /修改余式 r 的最高次数,即修改 r.nif(r.n=-1) /r.n=-1 时,说明最大公因式已经找到printf(“所求最大公因式的“);show(ch2); /输出结果free(r.an); /回收动态分配内存elsedo_div(ch2,r); /辗转相除void main()struct chain ch1,ch2,ch;printf(“*建立第一个多项式*nn“);creat_chain(show(ch1);printf(“*建立第二个多项式*nn“);creat_chain(show(ch2);printf(“*以上两个多项式求和*nn“);do_add(show(ch);printf(“*以上两个多项式求公因式*nn“);do_div(ch1,ch2);/回收动态分配内存free(ch1.an);free(ch2.an);free(ch.an);

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


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

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

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