2520是最小的可以除以1-10所有数没有余数的数
求一个可以被1-20均分的所有数,方法优化后,给一个数组,得出最小可以均分所有数的数
function numsFn (arr) {let primeArr = [], res = 1;function isPrime (num) { // 判断是否为质数if (num < 2) {return false;} else if (num === 2) {return true;} else if (num % 2 === 0) {return false}let sq = Math.sqrt(num);for (let i = 3; i < sq; i+=2) {if (num % i === 0) {return false;}}return true;}function minPrime (num) { // 求最小质因子for (let i = 2; 2 < num; i++) {if (num % i === 0) {return i;}}return num;}for (let i in arr) {if (isPrime(arr[i])) {let item = arr.splice(i, 1);primeArr = [...primeArr, ...item];}}for (let i in primeArr) {res *= primeArr[i];}for (let i in arr) { // 遍历剩余的非质数数组// 如果可以整除非质数,则什么都不做,不可整除时乘以该数的最小质因子(循环)while (res % arr[i] !== 0) {res *= minPrime(arr[i]);}}return res;}
