[Javascript]找出能被两个给定参数和它们之间的连续数字整除的最小公倍数

function commonindex(a, b) {//找最大因数 原理是短除法 
				var arra = [];
				console.log("a=" + a + "b=" + b);
				for(var i = 1; i <= a; i++) {
					if(a % i === 0) {
						arra.push(i);
					}
				}
				for(var i = 1; i <= b; i++) {
					if(b % i === 0) {
						arra.push(i);
					}
				}
				var index = '';
				arra.sort(function(a, b) {
					return a - b;
				});//将参数推入arra 并且排序
				console.log(arra);
//重复出现的为公约数,最大公约数为数列最后一项公约数(用正则表达式应该会更好看,但是不会)
				for(var i = arra.length - 1; i >= 0; i--) {
					if(arra[i] === arra[i - 1] && !index) {
						index = arra[i];
					}
				}
				console.log(index);//参数互质,为1
				if(index == 1 || index == "") {
					return a * b;
				} else {//短除法 得最大公倍数   最大公倍数=a*b/最大公约数 
					var indexa = a / index;
					var indexb = b / index;
					console.log("indexa=" + indexa);
					console.log("indexb=" + indexb);
					//console.log(index*(indexa)*(indexb));
					return index * (indexa) * (indexb);
				}
			}
function smallestCommons(arr) {
				var a = arr[0] > arr[1] ? arr[0] : arr[1];
				var b = arr[0] < arr[1] ? arr[0] : arr[1];
				var sum = 1;


				for(var i = b; i <= a; i++) {
					sum = commonindex(sum, i);
				}


				return sum;
			}




			console.log(smallestCommons([1, 10]));

用了大量循环,代码臃肿,抽象化程度太低,可读性也一般。

要想办法精简掉那些for循环。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值