求最大公约数的算法分析及实验报告

 

算法设计与分析

实验报告书

 

实验名称:   求两个自然数m和n的最大公约数                        

                                                

 

 

 

学   号:                            

 

姓   名:                          

 

 

 

 

实验时间:    2015年 4  月1   日

 


 一 实验目的和要求

(1)复习数据结构课程的相关知识,实现课程间的平滑过渡;

(2)掌握并应用算法的数学分析和后验分析方法;

(3)理解这样一个观点:不同的算法能够解决相同的问题,这些算法的解题思路不同,复杂程度不同,解题效率也不同。

二 实验内容

(1)      至少设计出三个版本的求最大公约数算法;

(2)      对所设计的算法采用大O符号进行时间复杂性分析;

(3)      上机实现算法,并用计数法和计时法分别测算算法的运行时间;

三 实验环境

    VC++6.0

四 设计思想及实验步骤 

  设计思想:

先分别用三种算法求出一组m和n的最大公约数,判断三个算法都是可行的,然后用text函数分别调用三个求最大公约数的函数,将k从100,每次扩大10倍,到50000000. 在每个k值附近求得1000对(m,n),调用一种函数运算1000次,用时间函数和计数器求得函数运行1000次的运行时间和计数,并求出每次的平均时间和平均计数。然后根据结果分别做出平均时间和平均计数的图标并进行分析。

   实验步骤:

1. 设计三种求最大公约数的算法和测算平均时间和平均计数的算法

2. 对所设计的算法采用大O符号进行时间复杂性分析

3. 实现算法并运行,分别测算每个算法的平均时间和平均计数

4. 根据结果分别作出平均时间和平均计数的图标

5. 根据图标分析的出结论。

主要基本算法描述如下:

 CommFactor1 (欧几里得)

输入:两个自然数m和n

返回:m和n的最大公约数

1.Count=0 ; r =m%n;

2. 循环直到r=0

  2.1 m=n;

  2.2 n=r;

  2.3 r=m%n;

  2.4 count++;

3. num+=count;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值