`
littie1987
  • 浏览: 133875 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

最大公约数最优算法

    博客分类:
  • Java
 
阅读更多
/****
*辗转相除法,也叫欧几里得算法 在大数的时候很高效
*/
public static int gcd(int m, int n){
	    m = m<0?-m:m;
	    n = n<0?-n:n;
	    
		if(m==0)return n;
	    if(n==0)return m;

		int a = 0,b = 0; 
	    a = m>n?m:n;
	    b = m+n-a;
	    
	    int temp=0;
	    while(a%b!=0){
	    	temp = a%b;
	    	a = b;
	    	b = temp;
	    }
	    return b;
	}
	
    /****
    *更相减损发,出自九章算术
    */
	public static int gcd1(int m,int n){
		m = m<0?-m : m;
		n = n<0?-n : n;
		
		if(m==0)return n;
		if(n==0)return m;
		int x=0,y=0;
		x=m>n?m:n;
		y = m+n-x;
		
		while(x!=y){
			x = x-y;
			if(x<y){
				x = x+y;
				y = x-y;
				x = x-y;
			}
			
		}
		return x;
	}

 

分享到:
评论

相关推荐

    最大公约数——三种算法

    以下将详细介绍三种常见的求解最大公约数的算法:欧几里得法、循环测试法和质因数分解法。 1. **欧几里得法**: 欧几里得算法,又称为辗转相除法,是由古希腊数学家欧几里得提出的一种高效求解最大公约数的方法。...

    最大公约数的三种算法复杂度分析时间计算.pdf

    总结来说,欧几里得算法因其高效的时间复杂度在求最大公约数的问题中表现最优,而连续整数检测法和分解质因数算法则在特定情况下各有优劣。通过这次实验,我们加深了对算法复杂度的理解,认识到不同的算法在解决问题...

    vb最大公约数如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数

    欧几里得算法基于这样一个事实:两个整数a和b(a&gt;b)的最大公约数等于b和a除以b的余数的最大公约数。用VB实现如下: ```vb Function GCD_Euclid(a As Integer, b As Integer) As Integer If b = 0 Then GCD_...

    常见算法介绍及辗转相除法求解最大公约数

    然后在`main`函数中,接收用户输入的两个整数,调用`gcd`函数计算它们的最大公约数,并输出结果。 以上总结了常见的算法类型及其应用场景,这些算法在实际编程和解决问题过程中都有着广泛的应用。

    算法大全代码

    该算法基于原理:两个整数 a 和 b 的最大公约数等于 b 和 a 除以 b 的余数的最大公约数,直到余数为 0,此时 b 就是最大公约数。 2. 最小公倍数(Least Common Multiple, LCM) 最小公倍数是能够被两个或更多整数...

    32位公约数

    欧几里德算法是一种古老而高效的求解最大公约数的方法,其基本原理如下: - **定义**: 给定两个正整数a和b (a &gt; b),它们的最大公约数可以通过以下递归关系求得: \[ gcd(a, b) = gcd(b, a \% b) \] 其中 \(a \%...

    java笔试常见的算法题

    全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、打印九九乘法表、判断素数、快速排序的递归实现和非递归实现、随机数、字符串操作、50人围成一圈,数到3和3的倍数的人出局,最后剩下的人是谁。...

    算法设计与分析基础习题参考答案.doc

    gcd算法是用于计算两个正整数的最大公约数的算法。该算法的基本思想是使用欧几里得算法,通过不断地除法和取余数,直到余数为0时,得到的商就是最大公约数。例如,gcd(m,n)=gcd(n,m mod n),其中m mod n是m除以n的...

    C语言常用算法

    计算最大公约数最常用的方法是欧几里得算法,它利用了这样一个事实:两个整数的最大公约数与它们的差的最大公约数相同。在实现时,首先判断两个数的大小,确保较大的数除以较小的数,然后不断用余数替换这两个数中的...

    算法合集 算法的C语言描述

    - **实现**: 使用递归方式实现欧几里得算法来求解最大公约数。 ```plaintext function gcd(a, b: integer): integer; begin if b = 0 then gcd := a else gcd := gcd(b, a mod b); end; ``` #### 2. 最小公...

    高级算法设计与分析

    例如,计算两个整数的最大公约数问题,可以使用欧几里得算法。该算法通过不断取余数的方式,直到余数为0,此时的被除数即为最大公约数。 在学习本课程的过程中,学生需要阅读相关的教材和参考书目。教材《算法设计...

    01.概述1

    最大公约数(GCD),又称最大公因数,是两个或多个非零整数共有的约数中最大的一个。在数学中,求两个非负整数m和n的最大公约数通常有两种方法: 1. **质因数分解法**: 这种方法首先分别找出m和n的所有质因数,...

    计算机的算法分析实验报告

    3. 分解质因数法:此方法先将两个数分解成质因数,然后找出它们共有的质因数并相乘得到最大公约数。例如: ```c int Gcd(int m, int n) { int q, i, j, temp; // ... for (i = 0; i ; i++) for (j = 0; j ; j++)...

    《算法笔记》pdf版,欢迎下载学习~

    10. **位操作**:利用位运算进行高效计算,比如快速幂、求最大公约数和最小公倍数等。 通过《算法笔记》,读者不仅能掌握这些基础知识,还能学习如何在实际问题中应用它们,提升编程和解题技巧。此外,书中可能还...

    数据结构算法(ACM比赛必备算法)

    数论算法则涉及整数性质的研究,如质因数分解、欧几里得算法求最大公约数、扩展欧几里得算法求模逆元等,这些在加密算法和图形学中有重要应用。 5. **数学模型**:在算法设计中,建立数学模型能帮助我们理解问题的...

    罗勇军-算法竞赛题单.zip

    7. **数学知识**:竞赛中常涉及数学知识,如数论(最大公约数、最小公倍数、质因数分解等)、组合数学(排列组合、鸽巢原理等)、图论、概率论等。数学基础扎实能提高解题效率。 8. **计算几何**:处理几何问题时,...

    各种算法汇总(背包问题、图论算法)

    例如,`gcd`函数使用欧几里得算法求解两个整数的最大公约数,通过反复取模直到余数为零来递归地缩小问题规模。`lcm`函数则利用最大公约数与两数乘积的关系来计算最小公倍数。此外,我们还展示了两种判断素数的方法:...

    ACM 算法模板集

    1. Greatest Common Divisor最大公约数 2. Prime素数判断 3. Sieve Prime素数筛法 4. Module Inverse模逆元 5. Extended Euclid扩展欧几里德算法 6. Modular Linear Equation模线性方程(同余方程) 7. Chinese ...

    ACM算法模版大集合

    最大公约数 Euclid算法 扩展的Euclid算法 同余方程 / 二元一次不定方程 同余方程组 线性方程组 高斯消元法 解mod 2域上的线性方程组 整系数方程组的精确解法 矩阵 行列式的计算 利用矩阵乘法快速计算...

Global site tag (gtag.js) - Google Analytics