




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法设计与分析实验报告书实验名称: 算法设计与分析之实验一 - 求两个数的最大公约数 学 号: 2012210890 姓 名: 王朔 评语:成绩: 指导教师: 批阅时间: 年 月 日算法分析与设计实验报告 - 6 - 一 实验目的和要求(1) 复习上课所讲的内容;(2) 掌握并应用算法的数学分析和后验分析方法;(3) 理解这样一个观点:不同的算法能够解决相同的问题,这些算法的解题思路不同,复杂程度不同,解题效率也不同。(4) 至少设计出三个版本的求最大公约数算法;(5) 上机实现算法,并用测算三种算法的运行时间;(6) 通过分析对比,得出自己的结论。 二 实验内容 设计三种算法求两个自然数 m 和 n 的最大公约数,并分析每种算法运行所需时间.三 实验环境 PCWin7系统 , VISUALC+6.0 四 设计思想及实验步骤 1.欧几里得辗转相除算法:输入两个正整数m,n(mn);求出两个数的最大值Max和最小值Min;计算Max除以Min所得的余数r;Max=Min,Min=r;若r0,则m,n的最大公约数等于Max;否则转到;输出最大公约数Max。2.蛮力法算法:输入两个正整数m,n;令常量factor = 1;循环变量i从2min(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;如果Minr,那么把Min赋给Max,把r赋给Min;否则把r赋给Max,执行;输出最大公约数Min。测试三种算法,在例举数的范围内产生随机数,且在每个范围内运行1000次,求出所需总时间,最后输出计算每种算法平均执行一次所需的时间。六 核心源代码/ 2012210890王朔.cpp : Defines the entry point for the console application./#include stdafx.h#include stdio.h#include stdlib.h#include time.h#include windows.hint CommFactor1(int m,int n);int CommFactor2(int m,int n);int CommFactor3(int m,int n);int main(int argc, char* argv) int a10 = 10000,20000,40000,80000,100000,200000,500000,1000000,2000000,4000000; LARGE_INTEGER BegainTime; LARGE_INTEGER EndTime; LARGE_INTEGER Frequency; QueryPerformanceFrequency(&Frequency); QueryPerformanceCounter(&BegainTime); srand(unsigned)time(NULL); for(int i=0;i10;i+) for(int j=0;j1000;j=j+1) double k = (rand()*0.1); long m = (long)(ai+k); k = (0.1*rand(); long n = (long)(ai-k);CommFactor1(m,n); QueryPerformanceCounter(&EndTime); printf(算法一总耗时: %.10f 秒n,(double)(EndTime.QuadPart-BegainTime.QuadPart)/(Frequency.QuadPart*10000); system(pause); return 0;int CommFactor1(int m, int n) int c = m%n;while(c!=0)m = n;n = c;c= m%n;return n;int CommFactor2(int m, int n) int i, factor = 1; for(i = 2; i= m & im)i = m;m = n;n = i;r = m%n; while (r!=0) m = m-n; if(nm) i = m; m = n; n = i; r = m%n; return n;七 实验结果及分析 三种算法 算法运行时间欧几里得辗转相除法时间(ms)蛮力法时间(ms)欧几里得减法时间(ms)平均使用时间(ms)0.0008929 3.9237605 0.0041045 八 实验体会(包括本实验中遇到的问题、具体的解决方法、还没有解决的问题、实验收获等) 此次实验初步了解了算法分析,三种算法虽然结果相同但是效率却不同。对于复杂度的求解,可以根据我的结果分析得到欧几里得辗转相除算法的是最优算法,欧几里得减法其次,最复杂的是蛮力法。 在实验中,对于使用产生随机数测试算法的问题有了新的认识和了解,并学会了使用时间测试函数.从这次实验中,我复习了C语言代码,同时也通过算法分析用三种方法求解出了最大公约数这个问题。从这个试验的结果我了解到了算法的优与劣的差别,虽然得到的是同样的结果,但是需要的时间和资源却相差很大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新生儿营养不良综合症临床诊断模拟考试卷答案及解析
- 2025年中西医结合综合诊疗方案评估答案及解析
- 2025年营养学病人的营养支持治疗考试答案及解析
- 协议书的可靠性
- 2025年内江市市本级部分事业单位公开考核招聘工作人员(第二批)的(35人)考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025年急诊外科创伤抢救技能演练答案及解析
- 2025年福建省宁德市福安市农村党群招聘22人考前自测高频考点模拟试题及参考答案详解
- 2025年台州玉环市卫生健康系统公开招聘高层次卫技人才3人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年皮肤科常见皮肤病诊断与治疗考试答案及解析
- 《-和我想的不一样》(2017年广西柳州中考满分作文6篇)
- 2024年中国充电基础设施服务质量发展报告
- 2024小学科学教师职称考试模拟试卷及参考答案
- 农村房产放弃协议书
- 2025年中国热镀锡铜线数据监测报告
- 母女亲子断绝协议书范本
- 物联网导论(第四版)课件:感知技术
- 客户关系管理(CRM)系统项目总结报告范文
- 抖音外卖合同协议
- 装卸设备安全管理制度
- 做有温度的护理人
- 学校突发事件应急处置全套流程图(可编辑)
评论
0/150
提交评论