经典算法——欧几里德算法

来源:互联网 发布:游族网络垃圾广告 编辑:程序博客网 时间:2024/06/18 16:38

一、算法创始人介绍:

欧几里德(生卒年不详,约300BC

欧几里德是公元前300年左右在埃及亚历山大省积极活跃的一位教师。

欧几里德编写了伟大的几何教科书《几何原本》。《几何原本》的重要性并不在于它所论证的哪条具体定理,书中几乎所有的定理和证明在欧几里德以前就为人所知晓。欧几里德的伟大贡献在于他对教材的编排和大纲的制订。

在《几何原本》中,欧几里德首先涉及到要挑选一套定理和公理,接着就认真地编排这些定理和公理,循序渐进,逻辑性强。他在必要的地方补充了缺少的步骤,提出了缺少的证据。值得注意的是,《几何原本》虽然主要是对平面几何和立体几何的发展,但是也包含着大量的代数和数论内容。

欧几里德在数学方面做出的最大贡献就是为数学建立了第一套科学体系。除此以外,他在代数、几何、数论方面有一些成就。

二、算法数学原理:

欧几里德算法是计算两整数最大公约数的经典算法。效率之高,后世无人能及。

例:计算整数aba>b)的最大公约数gcd(a, b)

解:

gcd(a, b)|agcd(a, b)|b

gcd(a, b)|a mod b

gcd(a, b)=gcd(b, a mod b)

循环,用a mod b 代替a,直至被求两数相等。此时

b=a mod b

gcd(a, b)=gcd(b, a mod b)=b

三、算法C/C++代码:

long gcd(long a, long b)

{

  long r;

  while(b)

  {

r=a%b;

a=b;

b=r;

  }

  return a;

}