js_最大公约数,用递归的方式和循环两种方式

匿名 (未验证) 提交于 2019-12-03 00:34:01

一、循环的方式:

//功能:求两个数的最大公约数 //参数:两个数: //返回值:最大公约数 function f(m,n){	 	//1、求最小数 	var min = m<n?m:n;	 	//2、从大到小循环找第一个公约数	 	for(var i=min;i>=2;i--){ 		if(m%i==0 && n%i==0){ 			return i; 		} 	} 	return 1; }

二、递归的方式:

首先确定如何求最大公约数,我们采用欧几里得算法(辗转相除法),算法描述如下:
例:48,57


9%3=0

如下示意图:


//功能:求两个数的最大公约数 //参数:两个数: //返回值:最大公约数 function f(m,n){	 	//大数能否整除小数, 	if(m>n){ 		var max = m; 		var min = n; 	}else{ 		var min = m; 		var max = n; 	} 	if(max%min==0){	 		//1、如果能整除,小数就是最大公约数 		return min;	 	}else{ 		//2、如果不能整除,那就求小数和余数的最大公约数 		return f(min,max%min); 	} }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!