一、循环的方式:
//功能:求两个数的最大公约数 //参数:两个数: //返回值:最大公约数 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); } }
文章来源: js_最大公约数,用递归的方式和循环两种方式