题目:
找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。
范围是两个数字构成的数组,两个数字不一定按数字顺序排序。
例如对 1 和 3 —— 找出能被 1 和 3 和它们之间所有数字整除的最小公倍数。
代码:
1 function smallestCommons(arr) { 2 //原始参数数组排序 3 arr=arr.sort(); 4 var num=arr[0]; 5 //自arr[0]+1开始,相邻两数的最大公约数与num值累乘。 6 for(var i=arr[0]+1;i<=arr[1];i++){ 7 num*=i/gcd(i,num); 8 } 9 return num; 10 } 11 //欧几里得定律求两个数的最大公约数;两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。 12 function gcd(m,n){ 13 if(m%n===0)return n; 14 return gcd(n,m%n); 15 }