好文档 - 专业文书写作范文服务资料分享网站

算法分析与设计求最大公约数问题实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

验报告

2020年4月19日

1

算法分析与设计求最大公约数问题实

算法设计与分析

实验报告书

实验名称: 算法设计与分析之实验一

------ 求两个数的最大公约数

学 号: 210890 姓 名: 王朔

评语: 成绩: 指导教师: 批阅时间: 年 月 日文档仅供参考,不当之处,请联系改正。

一 实验目的和要求

(1) 复习上课所讲的内容;

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

(3) 理解这样一个观点:不同的算法能够解决相同的问题,这些算

法的解题思路不同,复杂程度不同,解题效率也不同。

(4) 至少设计出三个版本的求最大公约数算法; (5) 上机实现算法,并用测算三种算法的运行时间; (6) 经过分析对比,得出自己的结论。

二 实验内容

设计三种算法求两个自然数 m 和 n 的最大公约数,并分析每种算法运行所需时间.

三 实验环境

PCWin7系统 , VISUALC++6.0

四 设计思想及实验步骤

1.欧几里得辗转相除算法: ①输入两个正整数m,n(m>n);

②求出两个数的最大值Max和最小值Min; ③计算Max除以Min所得的余数r;

1

2020年4月19日

文档仅供参考,不当之处,请联系改正。

④Max=Min,Min=r;

⑤若r=0,则m,n的最大公约数等于Max;否则转到②; ⑥输出最大公约数Max。

2.蛮力法算法:

①输入两个正整数m,n;

②令常量factor = 1;循环变量i从2~min(m,n); ③如果i是m和n的公因子,则执行④; ④factor = factor*i; m = m/i; n = n/i;

⑤如果i不是m和n的公因子,则i = i +1; ⑥输出factor;

3.欧几里得减法算法: ①输入两个正整数a,b;

②求出两个数的最大值Max和最小值Min; ③若Max等于Min,转到⑥; ④把Max-Min的差赋予r;

⑤如果Min>r,那么把Min赋给Max,把r赋给Min;否则把r赋给Max,执行③;

⑥输出最大公约数Min。

2020年4月19日

2

文档仅供参考,不当之处,请联系改正。

测试三种算法,在例举数的范围内产生随机数,且在每个范围内运行1000次,求出所需总时间,最后输出计算每种算法平均执行一次所需的时间。

六 核心源代码

// 210890王朔.cpp : Defines the entry point for the console application.//

#include \

#include \ #include \ #include \ #include \

int CommFactor1(int m,int n); int CommFactor2(int m,int n); int CommFactor3(int m,int n);

int main(int argc, char* argv[])

2020年4月19日

3

算法分析与设计求最大公约数问题实验报告

验报告2020年4月19日1算法分析与设计求最大公约数问题实算法设计与分析实验报告书实验名称:算法设计与分析之实验一----
推荐度:
点击下载文档文档为doc格式
5k8j32fjtk0ne2d1fovz9epjx24qp9012q1
领取福利

微信扫码领取福利

微信扫码分享