码迷,mamicode.com
首页 > 编程语言 > 详细

最大公约数-----欧几里得算法

时间:2016-03-20 23:54:21      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

欧几里得算法:

  如果求两个数的最大公约数,那么最一般的求法是设置一个变量i=1,然后i不断加一,如果i加到某个数后两个数都能整除这个数了,然后把这个变量保存下来,然后最后的结果中最大的就是最大公约数.

  然而这种方法时间复杂度可想而知有多高,所以一般情况瞎并不用这种方法,那么就有下面的欧几里得算法:

  输入:两个数 a,b

  输出:两个数的最大公约数 c

  欧几里得算法:(1)找出两个数中最大的和最小的,分别为tmax、tmin,

         (2)不断令设置一个变量t代表tmin,tmin赋值为tmax  mod(%) tmin,然后再将t赋值给tmax

         (3)当tmin等于0的时候退出循环

  剩下的tmax就是最大公约数

  证明过程可以参考刘汝佳的《算法设计竞赛入门经典》第二版

  代码如下:

    

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 int gcd(int a,int b){
 7     int tmax = a>b?a:b;
 8     int tmin = a<b?a:b;
 9     while(tmin){
10         int t= tmax % tmin;
11         tmax = tmin;
12         tmin = t;
13     }
14 return tmax;
15 }

 

最大公约数-----欧几里得算法

标签:

原文地址:http://www.cnblogs.com/dqsBK/p/5300187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!