`
littie1987
  • 浏览: 133340 次
  • 性别: 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. **欧几里得法**: 欧几里得算法,又称为辗转相除法,是由古希腊数学家欧几里得提出的一种高效求解最大公约数的方法。...

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

    首先,我们设计了三种求最大公约数的算法:连续整数检测法、欧几里得算法和分解质因数算法。对于每种算法,我们都进行了时间复杂度的分析。 连续整数检测法的时间复杂度为 O(n),其中 n 是两个自然数 m 和 n 的较小...

    最大公约数的三种算法复杂度分析时间计算.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的倍数的人出局,最后剩下的人是谁。...

    数据结构基本算法大全(word版)

    - GCD是通过欧几里得算法实现的,即如果b等于0,则最大公约数是a,否则最大公约数是a除以b的余数和b的GCD。 - LCM是通过a除以GCD(a, b)得到的,确保两个数的乘积等于它们的最小公倍数。 2. 素数判断: - 对于小...

    算法设计与分析基础习题参考答案.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++)...

    2021高中数学必修三练习:1.1算法的含义含答案定义.pdf

    在课外链接部分,给出了求两个数最大公因数的算法,通过素因数分解和确定公共素因数的指数,找到最大公因数。这种算法既清晰又有效。同样,设计算法判断97是否为素数,可以利用质数检验的方法,如试除法,从2开始...

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

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

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

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

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

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

Global site tag (gtag.js) - Google Analytics