二分搜索: 给定一个整数X和数组A[N],A[N]已经排好序,要求X=A[m]时m的值,如果没有,返回-1.

整个搜索过程从A[mid]开始,即判断x与数组中间数的大小关系,这样就把范围缩小一倍了,然后在分割出来的数组中再与中间数比较,于是就可以很快得出结果.

代码:

 1 template<typename T>
 2 int BinarySearch(const vector<T>& a,const T& x)
 3 {
 4     int low=0,high=a,size()-1;
 5     int mid=(low+high)/2;
 6     while(low<high){
 7         if(a[mid]<x)
 8             low=mid+1;
 9         else if(a[mid]>x)
10                 high=mid-1;
11                 else
12                 return mid;
13     }
14     return -1;
15 } 

欧几里德算法:计算两个数的最大公因数(同时整除两个的最大整数).

百度百科上写的很多,http://baike.baidu.com/view/1241014.htm.

我的理解,假设要求a,b的最大公约数.假设d是a,b的最大公约数.在a大于b的情况下,a=m*b+r  (m!=0,r=a mod b).d是a,b的最大公约数,有,a mod d=0;b mod d=0.那么(m*b+r) mod d=0,于是的推出

r mod d=0,即d也是a mod b的公约数.设最大公约数函数gcd(a,b),那么他也等于gcd(b,a mod b).递归下去,于是当余数为0时,最大公约数就是最后一个被除数了.

代码:

long Gcd(long m,long n)
{while(n!=0){long rem=m%n;m=n;n=rem;}return m;
}

转载于:https://www.cnblogs.com/yTPety/archive/2013/03/04/2943447.html

二分搜索,欧几里德算法相关推荐

  1. 【数论基础】欧几里德算法及其各种应用

    目录: 欧几里德算法(辗转相除法) 1.问题引入:线段上格点的个数 2.输入两个正整数,求最大公约数和最小公倍数 3.P1029 最大公约数和最小公倍数问题 欧几里德算法(辗转相除法) 辗转相除法, ...

  2. 欧几里德算法(自写理解)

    gcd欧几里德算法  求取最大公约数gcd(a,b) 这个不用多说了 extgcd拓展欧几里德算法 用于求解 ax+by=gcd(a,b)的解 这个要多说一下 ax+by=c,(a,b,c都是常数) ...

  3. poj 2115 C Looooops(扩展欧几里德算法)

    题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...

  4. 欧几里德与扩展欧几里德算法——密码学笔记(五)

    一.欧几里德算法 又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a% ...

  5. 欧几里德算法与扩展欧几里德算法

    欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd( ...

  6. poj 1061 (扩展欧几里德算法)

    首先先抛出一个例题:            青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 89761   Acc ...

  7. 无聊博文之:用同余的语言阐述欧几里德算法

    下面用同余的语言来阐述欧几里德算法.对于整数$a$和正整数$b$,我们知道 \begin{equation} \label{eq:11.16} a=q_1b+r_1(q_1\geq 0,0\leq r ...

  8. ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)

    为什么老是碰上 扩展欧几里德算法 ( •̀∀•́ )最讨厌数论了 看来是时候学一学了 度娘百科说: 首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •̀∀•́ )她说根据数论中的相 ...

  9. 如何利用扩展欧几里得算法求解不定方程_欧几里德算法、拓展欧几里德、中国剩余定理...

    01.欧几里德算法(Euclidean algorithm)(辗转相除法) 欧几里德算法又称辗转相除法,主要是用于计算两个整数a,b的最大公约数. 简单点说一下算法原理:两个整数的最大公约数等于其中小 ...

最新文章

  1. AI 模型性能上不去?这真的不怪我,ImageNet 等数据集每 100 个标签就错 3 个!...
  2. SQLite 使用教程2 语法
  3. android相对布局代码,Android基础_3 Activity相对布局(示例代码)
  4. win10上面安装win7的虚拟机怎么相互ping通
  5. Windows系统下,使用Emacs+Putty操作远程机器
  6. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
  7. 差分硬盘的merge(合并差异)实验分析
  8. JavaScript字符串split方法
  9. VBoxGuestAdditions加载不了
  10. 【搞定GTD】用iPhone打造GTD实践1年后的心得体会
  11. docker常用命令
  12. 离散题目16——自反闭包
  13. 百思不得姐框架(二)
  14. Hack the box (HTB) Metatwo靶机
  15. 复盘总结笔记-吴志华老师讲座
  16. 科林明伦杯哈尔滨理工大学第六届程序设计团队赛-Team模拟
  17. 前端:简述表单提交前如何进行数据验证
  18. extern的几种用法
  19. 如何选股,短线选股策略
  20. 2M误码仪都有哪些功能? TFN T1000M数据误码传输测试仪

热门文章

  1. 华中师范大学邮箱matlab,正版软件管理与服务平台(华中师范大学)
  2. 在Python中查找字符串长度
  3. 手机怎么安装py thon_Python属性装饰器– Py​​thon @property
  4. Python字符串replace()
  5. 开课吧Java课堂:StringBuffer全解,非常详细
  6. MyEclipse破解文件+破解说明
  7. tomcat使用线程池配置高并发连接
  8. boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET
  9. 音标与字母发音不同的字母总结
  10. YAF 关闭错误异常使用trigger_error来处理