《算法分析与设计-实验一-求最大公约数(共8页).doc》由会员分享,可在线阅读,更多相关《算法分析与设计-实验一-求最大公约数(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上昆明理工大学信息工程与自动化学院学生实验报告( 201 201 学年 第 1 学期 )课程名称:算法设计与分析 开课实验室: 年 月 日年级、专业、班 学号 姓名 成绩实验项目名称求最大公约数指导教师 教师评语该同学是否了解实验原理:A.了解B.基本了解C.不了解该同学的实验能力:A.强 B.中等 C.差 该同学的实验是否达到要求:A.达到B.基本达到C.未达到实验报告是否规范:A.规范B.基本规范C.不规范实验过程是否详细记录:A.详细B.一般 C.没有 教师签名: 年 月 日一、上机目的及内容1.上机内容求两个自然数m和n的最大公约数。2.上机目的(1)复习数据结
2、构课程的相关知识,实现课程间的平滑过渡;(2)掌握并应用算法的数学分析和后验分析方法;(3)理解这样一个观点:不同的算法能够解决相同的问题,这些算法的解题思路不同,复杂程度不同,解题效率也不同。二、实验原理及基本技术路线图(方框原理图或程序流程图)(1)至少设计出三个版本的求最大公约数算法;(2)对所设计的算法采用大O符号进行时间复杂性分析;(3)上机实现算法,并用计数法和计时法分别测算算法的运行时间;(4)通过分析对比,得出自己的结论。本次实验求最大公约数设计了三种算法,方法一时间复杂度为:O(n/2);方法二时间复杂度为:O(log n);方法三时间复杂度为:O(n)。三种算法的结果是一样
3、的,但执行时间不相同。使用Microsoft Office Visio画出三种算法的流程图如下:方法一:方法二:方法三:三、所用仪器、材料(设备名称、型号、规格等或使用软件)1台PC及VISUAL C+6.0软件四、实验方法、步骤(或:程序代码或操作过程)方法一:程序代码:#include int min(int m,int n)if(m0;t-)if( m%t=0 & n%t=0 )printf(%d和%d的最大公约数为%d:n,m,n,t);break;方法二:程序代码:#include void main()int m,n,r;int a,b,temp;printf(method (2)
4、 n);printf(请输入两个数:n);scanf(%d,%d,&m,&n);if(mn)temp=m;m=n;n=temp; a=m;b=n;r=m%n;while(r!=0)m=n;n=r;r=m%n;printf(%d和%d的最大公约数为%d:n,a,b,n);方法三:程序代码:#include#define N 10int aN,bN;void divide(int t,int r)int i,j=0;for(i=2;i=t;i+)if(t%i=0)t=t/i;rj=i;j=j+1;i=i-1;void main()int m,n,i,j,k=0,p,cN;for(i=0;iN;i+
5、)ai=0;bi=0;ci=0;printf(method (3) n);printf(请输入两个数:n);scanf(%d,%d,&m,&n);divide(m,a);divide(n,b);for(i=0;i=N;i+)for(j=0;j=N;j+)if(ai=bj)ck=bj;bj=0;k=k+1;break;for(i=0,p=1;iN;i+)if(ci!=0)p=p*ci;printf(%d和%d的最大公约数是:%dn,m,n,p);五、实验过程原始记录( 测试数据、图表、计算等)在三种方法中分别输入两个数求出最大公约数,以下为三种方法运行截图:六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)这次实验设计了三种方法来求解最大公约数,虽然三种算法的最终结果是相同的,但是它们的时间复杂度以及运行时间不相同。方法一时间复杂度为:O(n/2);方法二时间复杂度为:O(log n);方法三时间复杂度为:O(n)。通过这次实验,我们还对数据结构的一些知识进行了复习,对算法的时间复杂度更加熟悉,以及知道了算法的设计方法和思路的不同对算法本身的执行会有一定的影响。 专心-专注-专业
限制150内