首页 > 解决方案 > Project Euler Problem 3 的正确想法是什么?

问题描述

对于每个需要问题本身的人:“13195 的质因数是 5、7、13 和 29。

数字 600851475143 的最大质因数是多少?”

所以我坐在这里试图用 JavaScript 解决它。我不想用谷歌搜索它,因为那样我会得到我不想要的确切解决方案。我只是想问是否有人可以告诉我我是否做错了什么,或者我是否有正确的想法,而我只是错过了一些东西(?)以及我可以考虑改进的地方,而没有告诉我直接的答案。代码还没有完成(需要按最大的数字对数组进行排序,我的浏览器在执行函数时崩溃/加载时间很长,所以循环也一定有问题)。

提前致谢。

function solve() {
  var divider = 2;
  var n = 600851475143;
  var item = 0;
  var arr = [];
  for (divider = 2; divider <= n; divider++) {
    if (n % divider === 0) {
      item = n / divider;
      arr.push(item);
    } else {
      divider++;
    }
  }
  console.log(arr);
}

标签: javascriptfor-loopif-statement

解决方案


正如史蒂夫(https://stackoverflow.com/users/6184972/steve)在评论中指出的那样:

“欧拉计划的许多问题更多地依赖于对数学的理解,而不是编程,所以这里的人可能不那么容易接受。我要指出的是,你迭代的是每一个整数,而不是每一个素数。你可能应该包含主要因素的某些方面,以使其更有效。一般提示:如果您正在迭代超过十亿的东西,请寻找一些优化“

所以我实际上实施了一个主要检查。


推荐阅读