【编程之美】求最大公约数

原创 2015年11月21日 11:27:00

//解法一:更相减损法

BigInt(BigInt x,BigInt y){
	if(x < y){
		return gcd(y,x);
	}
	if(y==0) return x;
	else return gcd(x-y,y);//gcd(y-x,y)
}

//解法二:辗转相除法

int gcd(int x, int y){
	return !b ? a:gcd(b,a%b);
}

//解法三:解法一和解法二的集合

BigInt gcd(BigInt x,BigInt y){
	if(x < y) return gcd(y,x);
	if(y==0) return x;
	else{
		if(IsEven(x)){
			if(IsEven(y))	return 2*gcd(x>>1,y>>1);
			else return gcd(x>>1,y);
		}
		else{
			if(IsEven(y)) return gcd(x,y>>1);
			else return gcd(y,x-y);
		}
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

编程之美读书笔记(5)最大公约数

问题: 求两个数的最大公约数 解法一: 欧几里得辗转相除法: f(x,y) = GCD(x,y), 取k = x / y, b = x % y,则:x = k*y + b; 如果一个数能整除...
  • SJF0115
  • SJF0115
  • 2013年02月25日 13:01
  • 5376

【C/C++】求最大公约数的三种方法

一、最大公约数与最小公倍数 最大公约数,属于数论所探究的内容。 最大公约数可以通过下面的三种方法求出来。 最小公倍数呢,它与最大公约数的乘机为所求数之积。   比如求  x,y的最大公约数和最小公倍数...
  • qq_31828515
  • qq_31828515
  • 2016年07月02日 20:48
  • 29010

用函数求最大公约数

(1)输入两个数,并求出其最大公约数 #include using namespace std; int gcd(int x,int y) { int max,min; int n; if(x...
  • fu_yunjian
  • fu_yunjian
  • 2016年08月05日 10:51
  • 1708

C++项目参考解答-求最大公约数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项...
  • sxhelijian
  • sxhelijian
  • 2014年11月07日 11:12
  • 3570

c语言实现求最大公约数的三种方法

一、最大公约数     最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大...
  • Landscape_
  • Landscape_
  • 2017年03月22日 22:24
  • 12543

java算法——求最大公约数和最小公倍数

//求最大公约数和最小公倍数 /*求最大公约数方法:辗转相除法 始终用较大数除以较小数,然后用余数代替较大数 整除时的除数就是最大公约数 举例:222 407求最大公约数 222 407(407除...
  • tingzhiyi
  • tingzhiyi
  • 2016年07月28日 20:26
  • 6048

求最大公约数(利用递归)

/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. ...
  • zylmtz2012
  • zylmtz2012
  • 2012年11月25日 11:26
  • 6915

【编程之美2.7】求最大公约数

int gcd(int x,int y) { if(x>1,y>>1)1,y);
  • panpan639944806
  • panpan639944806
  • 2012年11月11日 14:52
  • 277

三种方法求最大公约数(C语言版)

问题描述:用三种方法求两个的整数的最大公约数。 算法分析: 1.相减法:输入两整数a和b,(1)如果a>b,a=a-b;(2)如果a  (4)如果a!=b,则再执行(1)或(2) 程序实现如下图: ...
  • Aimee_mf
  • Aimee_mf
  • 2017年03月21日 23:20
  • 1356

求最大公约数的快速算法

 /**//* stein 算法求最大公约数,和欧基里德算法相比,效果更好: 主要思想如下: 化归思想    1.m为奇数时:    (1)n也为奇数:gcd(m,n) = gcd((m+n)/2,(...
  • oopos
  • oopos
  • 2007年10月08日 21:21
  • 3015
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【编程之美】求最大公约数
举报原因:
原因补充:

(最多只允许输入30个字)