- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一三法求最大公约数实验报告电子版(已交).doc
实验报告单闹卅劣二紆犯孚氏
实验报告单
Hubei University of Education
隧(驾)计算机学院
一、空無?的
(1) 复习数据结构课程的相关知识,实现课程间的平滑过渡;
(2) 掌握并应用算法的数学分析和后验分析方法;
(3) 理解这样一个观点:不同的算法能够解决相同的问题,这些算法的解题思路不同,复杂 程度彳、同,解题效率也彳、同。
机房
三、X血理(或爰求)
(1)至少设计出三个版本的求最大公约数算法;
(2) 对所设计的算法采用大0符号进行时间复杂性分析;
(3) 上机实现算法,并用计数法和计时法分别测算算法的运行时间;
(4) 通过分析对比,得出自己的结论。
源程序:
#includestdio. h ^include〈time. h #includestdlib.h int max(int m, int n) {
int r;
辻(mn)
r=n;
else
return r;
}
void Menu()
{
int a;
void algorithmone(); void algorithmtwoO ; void algorithmthree (); printf (〃请选择算法:\rT); printf (z,l.算法一\n); printf (z,2.算法二\n); printf (3.算法三\n); scanf (%d: a); getchar ();
switch(a)
{
case 1:algorithmoneO ;break; case 2:algorithmtwoO ;break; case 3:algorithmthree():break;
default:printf (请输入 1, 2, 3 中的一个! \n);
}
void algorithmone () 〃算法一
{
clock_t start, finish;
int m, n, r;
char key;
printff求两个数的最大公约数,请输入这两个数:); scanf (%d %d, m, n);
getchar ();
start=clock();
r=max (m, n);
while(r0)
{
if(m%r==0)
{
if(n%r==0)
{
printff算法一求出的最大公约数为%d\『,r); finish=clock();
break;
}
else
r=r~l;
}
else
r=r~l;
}
printf (z,算法一所需的时间是:%ld 秒\n, (finish-start));
printf C是否返回主菜单? (y/n):);
key=getchar();
switch(key)
{
case y : Menu (); break:
case Y:Menu();break;
case n :break;
case N :break;
defauIt:printf(^error!\n^);
}
}
void algorithmtwo () //算法二
{
clock_t start, finish;
int m, n, r;
char key;
printff求两个数的最大公约数,请输入这两个数:); scanf (%d %d, m, n);
start二clock ();
while((r=m%n)!=0)
r=m%n;
辻(r==0)
{
printff算法二求出的最大公约数为%d\『,n); finish=clock ();
break;
}
}
printf (z,算法二所需的时间是:%ld 秒\n, (finish-start)); getchar ();
printf f是否返回主菜单? (y/n):);
key=getchar();
switch(key)
{
case y :Menu():break;
case Y : Menu (); break:
case n :break;
case N :break;
default:printf (error! \n,z);
}
}
//提取公共质数
//提取公共质数
{
int i, j, k=0, common[3], d=0;
for(i=0;i3;i++)
for(j=0;j3;j++)
if(arraym[i]==arrayn[j])
{
common[k]=arraym[i ];
k=k+l;
}
for(k=0;k3;k++)
for (d=k+l;d3;d++)
if(common[k]==common[d])
common[d]=l;
printf (z,算法三结果%d\n, common [0] *common [ 1 ] *common[2]);
}
void algorithmthree()
文档评论(0)