`
zhongkem
  • 浏览: 152489 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

求两数的最大公约数

阅读更多

来源:编程之美2.7

问题:求两数的最大公约数

//求两个数的最大公约数
public class GCD2_7 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x=4272;
		int y=25472;
		System.out.println(gcd1(x,y));
		System.out.println(gcd2(x,y));
		System.out.println(gcd3(x,y));
	}

	//方法一,辗转相除法 f(x,y)=f(y,x%y),缺点,对于大整数取余运算开销会很大
	public static int gcd1(int x,int y){
		return (y>0)?gcd1(y,x%y):x;
	}
	//方法二,f(x,y)=f(x-y,y)(x>y) 缺点,迭代次数会比较多。如x远大于y时
	public static int gcd2(int x,int y){
		if(x<y)return gcd2(y,x);
		if(y==0)return x;
		return gcd2(x-y,y);
	}
	//方法三,结合方法二,主要是减少迭代次数
	public static int gcd3(int x,int y){
		if(x<y)return gcd3(y,x);
		if(y==0)return x;
		else{
			if(isEven(x)){
				if(isEven(y))return(gcd3(x>>1,y>>1)<<1);
				else return(gcd3(x>>1,y));
			}else{
				if(isEven(y))return gcd3(x,y>>1);
				else return gcd3(y,x-y);
			}
		}
	}

	//判断一个数是否为偶数
	private static boolean isEven(int x) {
		
		return (x&1)==0;
	}
	
}

 

分享到:
评论

相关推荐

    求两数最大公约数求两数最大公约数

    在计算机科学和编程领域,"求两数最大公约数"是一个基本的问题,它涉及到数论和算法设计。最大公约数(Greatest Common Divisor,GCD)也被称为最大公因数,是两个或多个非零整数共有约数中最大的一个。在数学上,...

    四年级数学下册第五单元分数的意义和性质5.8求两数最大公因数的方法课时练冀教版

    本课时重点讲解了求两数最大公因数(Greatest Common Factor, GCF)的方法,这对于理解和简化分数至关重要。最大公因数是指两个或多个整数共有的最大的正因数。掌握求最大公因数的方法,不仅可以帮助我们化简分数,...

    获取两个数的最大公因数和最小公倍数

    用碾压法求出两个数的最大公因数,然后将剩下的分子连乘再乘以最大公因数即可获得最小公倍数

    C语言求两个数的最大公约数和最小公倍数

    在C语言中,求两个数的最大公约数通常有两种常见方法:辗转相除法(欧几里得算法)和更相减损法。 1. **辗转相除法**:基于更小的数能整除两数之差的性质,不断用较小的数去除较大的数,直至两数相等,此时的数即为...

    用c++求两个数最大公约数

    以上就是关于C++实现求解两个数最大公约数的辗转相除法和连续整数检测法的详细介绍,以及它们的时间复杂度分析。你可以通过"辗转相除法.txt"和"连续整数检测法.txt"这两个文件深入了解这两种算法的具体实现细节。

    JAVA求两个数的公约数公倍数

    用JAVA写了个关于两个数最大公约数最小公倍数的程序..不晓得质量如何import java.util.*; public class dd { public static void main(String args[]){ Scanner scanner; scanner=new Scanner(System.in); int m...

    Java求两个数的最大公约数、最小公倍数.rar

    在给定的"Java求两个数的最大公约数、最小公倍数.rar"压缩包文件中,可能包含了上述代码的实现。解压并查看`codesc.net`文件或相关源码文件,可以进一步学习和理解这个算法的具体实现。这个简单的例子展示了Java在...

    Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例

    而对于最小公倍数,由于Python标准库中并没有内置函数直接计算LCM,我们通常需要通过最大公约数来求得LCM,因为根据数学性质,两个数a和b的最小公倍数可以通过它们的乘积除以最大公约数得到,即LCM(a, b) = (a * b) ...

    用LabVIEW求最大公约数和最小公倍数

    用LabVIEW求最大公约数和最小公倍数。可以自行选择数据。

    基于matlab求两个数最大公约数函数.pptx

    在MATLAB中,计算两个数的最大公约数(Greatest Common Divisor, GCD)是一项基本操作,常用于处理数学问题、编码算法或是优化程序。MATLAB提供了内置函数`gcd()`来方便用户进行这一计算。本篇文章将深入探讨如何...

    gcd(a,b),求两个数最大公约数

    gcd(a,b),求两个数最大公约数 在计算机科学和数学中,求两个数的最大公约数(Greatest Common Divisor,GCD)是一个基本的问题。最大公约数是指两个或多个整数共有约数中最大的一个。欧几里德算法和辗转相除法是两...

    C语言编程实现求两个数的最大公约数和最小公倍数

    C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个数的最大公约数和最小公倍数C语言编程实现求两个...

    求 两个数 的 最大公约数

    ### 求两个数的最大公约数(GCD)—— C语言实现 #### 一、最大公约数的概念 在数学中,最大公约数(Greatest Common Divisor,简称GCD),也称为最大公因数(Highest Common Factor,简称HCF),指的是能够同时...

    FPGA求最大公约数及最小公倍数verilog

    基于FPGA开发板的两位数求最大公约数和最小公倍数的设计,该设计中利用辗转相减法求得公约数与公倍数,且两个数的数值可通过按键修改,设计灵活可靠。该设计基于vivado开发,并带有testbench文件,方便仿真学习。

    利用三种算法求最大公约数

    分解质因数法是通过将两个数分别分解为质因数,然后找出它们共同的质因数并相乘得到最大公约数。例如,12 = 2×2×3,18 = 2×3×3,它们的最大公约数是2×3=6。这种方法在处理大数时效率较低,因为分解质因数的...

    递归算法求两个数的最大公约数

    ### 递归算法求两个数的最大公约数 #### 1. 递归方法解析 **递归算法**是一种解决问题的方法,其中函数通过调用自身来解决问题。递归算法的关键在于找到一个基本结束条件(base case),以及如何将问题分解成更小...

    如何用c语言求最大公约数和最小公倍数

    该算法基于这样一个事实:如果`a`和`b`是两个正整数,并且`a &gt; b`,那么`a`和`b`的最大公约数等于`b`和`a mod b`的最大公约数。 #### 实现示例 下面是一个使用递归方式实现的GCD函数: ```c #include // 定义一...

    VB 求多个数的最大公约数.rar

    VB 求多个数的最大公约数,这应该是个比较简单的数学算法例子,求指定多个数的最大公约数,源码中请详细代码。部分代码如下:  Private Function big(ByVal m%, ByVal n%) As Integer '自定义函数  If m  Do  r...

    求两个数的最大公约数和最小公倍数

    求最小公倍数通常可以利用最大公约数来计算,公式为:两数的乘积除以它们的最大公约数等于最小公倍数,即LCM(a, b) = |a * b| / GCD(a, b)。 在Java中,我们可以创建一个类`GcdAndLcm`,并在其中定义两个方法`gcd...

Global site tag (gtag.js) - Google Analytics