`

递规之最大公约数

阅读更多
求两数的最大公约数
不用递规思路1:将两数从1开始除直至除到其中的一个数,如果都能除尽则记下该值

public static int zdgy(int n,int m){
		 int result =0;
			for(int i=1;i<=n;i++){
				if(n%i==0&&m%i==0){
					result=i;
				}
			}
			return result;
	}

辗转相相除递规思路2:
两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数,如果a>b ,a/b =s1...y1  如果y为0,则a,b的最大公约数为 b ,如果y不为1,b/y1= s2..y2
如果y2等于0,则a,b的最大公约数为y1,以此类推,直至余数为0,则除数为两数的最大公约数

例:
public static int get(int n,int m){
		//判断n是否小于m,如果小于则替换元素
		if(n<m){
			int t=n;
			n=m;
			m=t;
		}
		return gy(n,m);
	}
public static int gy(int n,int m){
		if(n%m==0){
			return m;
		}else{
		 return gy(m,n%m);
		}
		
	}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics