首页 > 解决方案 > 为循环划定界限时出现问题。欧拉问题 5

问题描述

我有一个问题,我的代码有效,但如果它是一个更大的数字并且我不知道在哪里将限制放在我的 i 位置......我该如何优化这段代码,所以我不需要计算限制,而不是在我的 i 中放这么多零?或者没有办法,这是应该的?

        function prob5(){
        for(var i =1;i<10000000000;i++){
            if((i%1)==0 && (i%2)==0 && (i%3)==0 && (i%4)==0 && (i%5)==0 && (i%6)==0 && (i%7)==0 && (i%8)==0 && (i%9)==0 && (i%10)==0 && (i%11)==0 && (i%12)==0 && (i%13)==0 && (i%14)==0 && (i%15)==0 && (i%16)==0 && (i%17)==0 && (i%18)==0 && (i%19)==0 && (i%20)==0) {
                break;
            }
        }
        console.log(i);
    }

标签: javascriptmath

解决方案


function getLowestNumDivisibleByAllUpTo(limit) {
  const numMax = factorial(limit);
  for (let num = 1; num < numMax; num++) {
    let divisibleByAll = true;
    for (let divisor = 2; divisor <= limit; divisor++) {
      if (num % divisor !== 0) {
        divisibleByAll = false;
        break;
      }
    }
    if (divisibleByAll) {
      return num;
    }
  }
}

function factorial(n) {
  if (n < 2) return 1;
  return n * factorial(n - 1);
}

console.log(getLowestNumDivisibleByAllUpTo(20));


推荐阅读