最大公约数的几种写法

简介:     特点及意义 最大公约数指某几个整数共有因子中最大的一个。 GCD即Greatest Common Divisor. 例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数。

 

 

特点及意义

最大公约数指某几个整数共有因子中最大的一个。
GCD即Greatest Common Divisor.
例如,12和30的公约数有:1、2、3、6,其中6就是12和30的 最大公约数
两个整数的最大公约数主要有两种寻找方法:
* 两数各分解质因子,然后取出同样有的项乘起来
* 辗转相除法(扩展版)
和最小公倍数(lcm)的关系:gcd(a, b)×lcm(a, b) = ab
两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数。
两个整数的最大公因子和最小公倍数中存在分配律:
* gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c))
* lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a, c))
在坐标里,将点(0, 0)和(a, b)连起来,通过整数坐标的点的数目(除了(0, 0)一点之外)就是gcd(a, b)。

gcd递归定理及证明

gcd递归定理是指gcd(a,b)=gcd(b,a%b),其中%表示取余数。
证明如下:
我们只需证明gcd(a,b)和gcd(b,a%b)可以互相整除即可。
对于gcd(a,b),它是a和b的线性组合中的最小正元素,gcd(b,a%b) 是b与a%b的一个线性组合,而a%b是a与b的一个线性组合,因而gcd(b,a%b)是一个a与b的线性组合,因为a,b都能被gcd(a,b)整除,因而任何一个a与b的线性组合都能被gcd(a,b)整除,所以gcd(b,a%b)能被gcd(a,b)整除。反之亦然。
 
// gcd.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
 
int gcd(int a ,int b)
{
	int c = 0;
	if (a < b)
	{
		c = a ;a = b; b= c;//把大的元素放在前面
	}


	for (;a - b >= 0 ;b = a - b,a = c)
	{
		if (a % b == 0)
		{
			return b;
		}
		c = b;

	}


}

unsigned int gcd(unsigned int a,unsigned int b)
{
	int r;
	while(b>0)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}
unsigned int gcd1(unsigned int a,unsigned int b)
{
	while(b^=a^=b^=a%=b);
	return a;
}

unsigned int gcd2(unsigned int a,unsigned int b)
{
	return (b>0)?gcd(b,a%b):a;
}
int _tmain(int argc, _TCHAR* argv[])
{
	int b = gcd(4,12);
	return 0;
}


相关文章
|
机器学习/深度学习 存储 自然语言处理
深度学习之持续的知识积累与转移
基于深度学习的持续知识积累与转移是指利用深度学习技术在多个任务或领域中有效地获取、更新和应用知识。这一过程能够提高模型在新任务上的性能,同时减少对大量标注数据的依赖。
179 8
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!(一)
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!
|
Ubuntu 关系型数据库 MySQL
表明明存在,但是就是报错表不存在
表明明存在,但是就是报错表不存在
150 0
|
监控 Cloud Native Prometheus
带你读《Prometheus监控实战》之一:监控简介
本书首先从监控体系讲起,介绍了关于监控的各种经典理论和方法。然后循序渐进地介绍了Prometheus的各个功能组件和配置方法,包括监控主机和容器、服务发现、警报管理,以及Kubernetes和运行其上的应用程序的监控。
衣服尺寸里面A,B是什么意思
衣服尺码中的“A、B、Y、C”有什么含义呢? a适合正常身材,b适合偏壮身材。a正常,b偏胖 84A,84B,52分别表示什么 84a=净胸围84正常身材,84b=净胸围84偏壮身材,52=衣服的胸围 衣服的胸围怎么比净胸围还要小啊 52是衣服平铺测量的单面胸围。
15306 0
|
安全 Java 数据安全/隐私保护
shiro实战系列(十四)之配置
Shiro 被设计成能够在任何环境下工作,从最简单的命令行应用程序到最大的的企业群集应用。由于环境的多样性,使得许多配置机制适用于它的配置。   一、 许多配置选项 Shiro的SecurityManager实现及所支持的组件都是兼容JavaBean的。
1275 0
|
存储 网络协议 负载均衡
|
传感器 Java 物联网
Android开发权威指南(第2版)新书发布(免费下载随书光盘内容,包括Android源代码)
光盘内容下载 光盘内容下载(新浪微盘) Android4.2.2(CM ROM)源代码下载 如果需要虚拟环境的,这里提供了ubuntu10.04 LTS版本,不需要CPU支持虚拟化(VirtualBox版【VirtualBox-4.
2399 0
Visual Studio 2008 简体中文专业版下载(附序列号)破解
  今天发现微软已经提供了专业版的试用版, 换个号就可以变正式版了。需要的朋友就下载了。 http://download.microsoft.com/do ... rialCHSX1435983.iso 序列号:XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT Visual Studio 2008简体中文试用版(90天)变成永久正式版的两种方法: 一、先安装试用版,然后在“添加或删除程序”里找到VS2008,点“更改/删除” 就会看到一个输入序列号的地方,把序列号输进去,点“升级”按钮即可,Team Suite和Professional通用。
1769 0