【算法设计zxd】第一章 算法基础 1.基本概念+最大公约数
目录
一、基本概念:
例1-1:求最大公约数
问题分析:
计算模型:
1) 穷举法
2) 欧几里德算法(辗转相除法)
算法设计与描述:
算法分析—效率:
1) 穷举法:
2) 欧几里德算法分析—渐近法
算法实现:
穷举法
欧几里得(辗转相除)
关于算法:
一、基本概念:
算法(Algorithm)
是对解题方案准确而完整的描述,是一系列解决问题的清晰指令,
代表着用系统的方法描述解决问题的策略机制。
算法定位:
“算法是计算机科学的核心”
“没有算法,就没有计算机程序”
“算法是计算机软件的灵魂”
“软件开发,算法先行”
例1-1:求最大公约数 Euclid(m,n)
【例1-1】求任意两个非负整数最大公约数(greatest common divisor, gcd)。
问题分析:
1)解决办法:质因数分解法、欧几里德算法 (辗转相除法)、更相减损法……
2)共同特点:使用公约数不断进行约简,约简的次数(迭代)越少,算法的效率越高。
计算模型:
设a, b >0;
1) 穷举法
2) 欧几里德算法(辗转相除法)
设r = a mod b
当r ≠ 0时,依据欧几里德定理,有
算法设计与描述:
算法分析—效率:
1) 穷举法:
若a、b互质,则公约数测算的取值范围为b, b-1, b-2,…,1,否则,不妨设测算至b-i 时结束,那么,可能的测试次数为:
其中,pi为测算所取到值的概率。若每个取值的概率相等,则pi=1/b,由上式可得平均运算次数为:
2) 欧几里德算法分析—渐近法
如果欧几里得算法需要做n次模运算, 则b必定不小于Fn-1。
若 b<Fn (不妨设a>b), 则算法所需模运算的次数必定小于n(对应Fn-2或Fn-3……,必然小于n次运算)。
菲波那契数列的通项公式为:
穷举法:f(b) =(b+1)/2
算法实现:
穷举法
//穷举法 -最大公约数
#include<stdio.h>int main()
{int a,b;int temp;printf("input any two numbers:");scanf("%d%d",&a,&b);temp = a<b ? a :b;//较小值 while( 0!= a%temp || 0!=b%temp ){// (0== a%temp && 0==b%temp)时退出循环 temp=temp-1;}printf("gcd : %d\n",temp);return 0;
}
欧几里得(辗转相除)
//欧几里得(辗转相除) -最大公约数
#include<stdio.h>int main()
{int a,b;int temp;printf("input any two numbers:");scanf("%d%d",&a,&b);temp = a%b; while(temp){a=b;b=temp;temp=a%b;}printf("gcd : %d\n",b);return 0;
}
递归:
int gcd(int a,int b)
{int r=a%b;if(r==0) {cout<<endl<<"欧几里得:"<<b<<endl;return b;}else {a=b;b=r;//a%bgcd(a,b);}
}
关于算法:
- 必须确定算法所处理的输入值域
- 对于输出有明确的要求,输出=f(输入)并在有限步骤内结束
- 算法设计必须是严谨、可行且正确的
- 算法每一个步骤都有确切的含义
- 同一算法可以用几种不同的形式来描述
- 同一问题,可能存在几种不同的算法
- 针对同一问题的不同算法,其运算效率也不一样
【算法设计zxd】第一章 算法基础 1.基本概念+最大公约数相关推荐
- 每天一道算法练习题--Day25 第一章 --算法专题 --- ----------蓄水池抽样
蓄水池抽样 问题描述 算法描述 相关题目 总结 力扣中关于蓄水池抽样问题官方标签是 2 道,根据我的做题情况来看,可能有三四道.比重算是比较低的,大家可以根据自己的实际情况选择性掌握. 蓄水池抽样的算 ...
- 第一章信息安全基础考试要点及真题分布
第一章信息安全基础考试要点及真题分布 第一章 信息安全基础 1.信息安全概念 2.信息安全法律法规 3.信息安全管理基础 4.信息安全标准化知识 5.信息安全专业英语 信息安全基础真题分值统计 201 ...
- 第一章 算法设计与分析基础知识
系列文章目录 第一章 算法设计与分析基础知识 第二章 算法的分治策略 第三章 算法的动态规划 第四章 算法的贪心法 -- @[TOC](这里写目录标题) # 一级目录 ## 二级目录 ### 三级目录 ...
- 高中数学必修3知识点总结归纳:第一章算法初步
大家好,今天分享高中数学必修3知识点总结归纳第一章算法初步,也是高中数学教学的重要内容.老师为大家整理的高中数学必修3算法初步知识点总结归纳,一起来看看吧. 好了,今天高中数学必修3知识点总结归纳第一 ...
- 【趣学算法】第一章 算法之美(上)
14天阅读挑战赛 [趣学算法]第一章 算法之美(上) 文章目录 [趣学算法]第一章 算法之美(上) 1.打开算法之门 2.妙不可言---算法复杂性 2.1 算法的引入 [算法的定义] [算法题] [& ...
- ZeroMQ 中文指南 第一章 ZeroMQ基础【转载】
此文章转载自GitHub : https://github.com/anjuke/zguide-cn 作者信息如下. ZMQ 指南 作者: Pieter Hintjens ph@imatix.com, ...
- 卫春芳计算机基础视频,第一章 计算机基础知识.pptx
文档介绍: 大学计算机基础主讲:数计学院卫春芳所用教材:<大学计算机基础>科学出版社大学计算机基础高等教育出版社杨振山龚沛曾主编大学计算机基础(第4版)大学计算机基础实验教程(电子版)参考 ...
- ZMQ 第一章 ZeroMQ基础
# ZMQ 第一章 ZeroMQ基础 首先得感谢原创作者的分享! **作者: Pieter Hintjens <ph@imatix.com>, CEO iMatix Corporation ...
- 雷达系统设计及matlab仿真(一) 第一章 雷达基础知识概论(测距 距离分辨率 多普勒频率 雷达方程 噪声和信噪比 脉冲积累)
第一章 雷达基础导论 1.1.雷达分类 1.1.1.基础知识了解 1.1.2. 工作波段划分 1.2.距离 1.2.1.距离的测量 PRF:脉冲重复频率&PRI:脉冲重复间隔 占空比和相关功率 ...
- 廖雪峰python教程——第一章 Python基础
第一章 Python基础 一.数据类型和变量 Python的数据类型包括整数.浮点数.字符串.布尔值.空值.变量.常量等.其中整数可以表示任意大小的整数:空值是Python里一个特殊的值,用None表 ...
最新文章
- 分布式事务之最终一致的Mq实现
- Elasticsearch 如何把SQL转换为DSL
- xml突然变成空白_“侏罗纪中期”出现了型增转变填补食肉性恐龙体型发展当中的空白...
- c#中的Form.Show和Form.ShowDialog的区别
- Linux:shell脚本命令: /dev/null 21 的理解
- select2实现全选
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(8)-DbSession线程内唯一
- 微信小程序tabBer图标大小如何自定义
- 理解辐射校正、辐射定标、大气校正关系
- 启动计算机实现5秒开机,win10提高开机速度的设置教程 电脑五秒开机优化步骤...
- 十天学会php 零基础,十天学会php:第一天
- 形式化验证和功能验证VC Formal-synopsys芯片验证基础篇(六)
- python计算贷款购房月供、利息
- windows 如何快速锁定计算机,Win7电脑锁定计算机快捷键的方法
- 明日书苑:书法用笔挫笔、疾涩、接笔、搭锋、裹锋、平铺、筑锋、过
- 80秒验证13亿个身份证号码,包含省市县验证
- 使用GitHub Actions通过CI提高代码质量
- ThinkPHP5.0.11Day01: composer 、助手函数、配置文件
- Springboot足球运动员训练计划管理系统的设计与实现 毕业设计-附源码281444
- Anaconda or Miniconda windows下 cmd命令行模式创建、激活、关闭、删除虚拟环境方法步骤
热门文章
- 一套免费Java开源农业物联网平台Version:3.0.1含源码
- PLC西门子水处理程序 包含:1200Plc程序,通讯点表,CAD原理图,操作说明
- hill图matlab代码,Hill密码的加密论文(内含matlab程序代码).doc
- 验证picard迭代c语言,用Picard迭代法解约束绳索动点坐标的数学说明
- 吉大计算机物联网工程学院,许德智
- 在Windows8.1下安装 Teamviewer12 报错
- 数据分析学习总结笔记17:文本分析入门案例实战
- 推荐阅读书籍《大象–thinking in UML》【软件工程】
- Android解决This project uses AndroidX dependencies---The following AndroidX dependencies are detected.
- 国辰视觉检测设备用在哪些行业?