2520是最小的可以除以1-10所有数没有余数的数
    求一个可以被1-20均分的所有数,方法优化后,给一个数组,得出最小可以均分所有数的数

    1. function numsFn (arr) {
    2. let primeArr = [], res = 1;
    3. function isPrime (num) { // 判断是否为质数
    4. if (num < 2) {
    5. return false;
    6. } else if (num === 2) {
    7. return true;
    8. } else if (num % 2 === 0) {
    9. return false
    10. }
    11. let sq = Math.sqrt(num);
    12. for (let i = 3; i < sq; i+=2) {
    13. if (num % i === 0) {
    14. return false;
    15. }
    16. }
    17. return true;
    18. }
    19. function minPrime (num) { // 求最小质因子
    20. for (let i = 2; 2 < num; i++) {
    21. if (num % i === 0) {
    22. return i;
    23. }
    24. }
    25. return num;
    26. }
    27. for (let i in arr) {
    28. if (isPrime(arr[i])) {
    29. let item = arr.splice(i, 1);
    30. primeArr = [...primeArr, ...item];
    31. }
    32. }
    33. for (let i in primeArr) {
    34. res *= primeArr[i];
    35. }
    36. for (let i in arr) { // 遍历剩余的非质数数组
    37. // 如果可以整除非质数,则什么都不做,不可整除时乘以该数的最小质因子(循环)
    38. while (res % arr[i] !== 0) {
    39. res *= minPrime(arr[i]);
    40. }
    41. }
    42. return res;
    43. }

    https://projecteuler.net/problem=5