代码改变世界

js计算最大公约数和最小公倍数

2018-01-23 18:07  muamaker  阅读(9881)  评论(0编辑  收藏  举报

一、计算最大公约数

    1、小学时候一般采用质因数分解法,一般使用短除得到结果,下面用一种最初级的方法求最大公约数

function gcd2(a,b){
		var result = 1;
		for(var i = 1; i <= a && i <= b; i++ ){
			if(a%i == 0 && b%i == 0 ){
				result = i;
			}
		}
		return result;
	}

 2、使用欧里几德算法,辗转相除法。具体原理自行百度。下面给出两种代码算法

   递归

 

function gcd(a,b){
		if(b == 0){
			return a;
		}
		var r = a % b;
		console.log(r);
		return gcd(b,r);
	}

  迭代

function GCD(a,b){
		var temp;
		while(b != 0){
			temp = a % b;
			a = b;
			b = temp;
		}
		return a;
	}

  二、最小公倍数,最小公倍数的算法,是两个数的乘积除以最大公倍数

	function scm(a,b){
		return (a*b)/gcd(a,b);
	}