Javascript 项目Euler最大素因子js

Javascript 项目Euler最大素因子js,javascript,Javascript,我已经看到了其他的答案,但我想知道为什么我的代码不起作用,或者可能只是计算时间太长。它写在下面 function isPrime(number){ for (var i = 2; i < number; i++){ if (number % i === 0){ return false } } return true } function firstNPrimes(num){ var largestPrimeFactor = '' for

我已经看到了其他的答案,但我想知道为什么我的代码不起作用,或者可能只是计算时间太长。它写在下面

function isPrime(number){
  for (var i = 2; i < number; i++){
    if (number % i === 0){
      return false
    }
  }
  return true
}

function firstNPrimes(num){
  var largestPrimeFactor = ''
  for (var i = 2; i < num/2; i++){
    if (num % isPrime(i) === 0) {
      largestPrimeFactor = i;
    }
  }
  return largestPrimeFactor;
}

console.log(firstNPrimes(600851475143));
函数isPrime(数字){
对于(变量i=2;i
所以我不是在寻找大量的优化,只是利用你的例程的精神找到输入的最大素数因子,而是通过布尔运算来修正mod,看看我是否同时是除数和素数,而不是检查太高的数字是否为素数并倒计时,而不是倒计时)。 尽管如此,我仍然可以得到正确的结果,但是用你的方法,检查一个非常大的数是否为素数需要很长的时间

函数isPrime(n){
对于(变量i=2;i*i 1;i--){
如果((num%i)=0)和&(isPrime(i))){
返回i;
}
}
//我们永远不会到这里
返回编号.NaN;
}
console.log(firstNPrimes(17000));
console.log(firstNPrimes(1570000));

//不要输入非常大的数字,需要花费太长的时间,所以我不是在寻找大量的优化,只是使用你的例程的精神来寻找输入的最大素数因子,而是通过布尔运算来修正mod,看看我是否同时是除数和素数,而不是检查太高的数字是否为素数并倒计时,没有上升)。 尽管如此,我仍然可以得到正确的结果,但是用你的方法,检查一个非常大的数是否为素数需要很长的时间

函数isPrime(n){
对于(变量i=2;i*i 1;i--){
如果((num%i)=0)和&(isPrime(i))){
返回i;
}
}
//我们永远不会到这里
返回编号.NaN;
}
console.log(firstNPrimes(17000));
console.log(firstNPrimes(1570000));

//不要输入太大的数字,需要太长时间
我不理解代码背后的意图。您正在从名为firstNPrimes的函数返回一个字符串,将布尔数模与零进行比较,等等。请您用简单的英语描述一下目标是什么?我希望字符串是一个数字。目的是用isPrime(i)对num进行模块化。如果num%isPrime(i)==0,则它应该返回最大的isPrime(i)。在is prime中,您可以检查i^2,请定义“不工作”。我正在尝试使用atom和命令提示符解决600851475143的问题,但这需要花费很长时间才能给出结果。我认为这是因为这是一个如此大的数字。我不理解代码背后的意图。您正在从名为firstNPrimes的函数返回一个字符串,将布尔数模与零进行比较,等等。请您用简单的英语描述一下目标是什么?我希望字符串是一个数字。目的是用isPrime(i)对num进行模块化。如果num%isPrime(i)==0,则它应该返回最大的isPrime(i)。在is prime中,您可以检查i^2,请定义“不工作”。我正在尝试使用atom和命令提示符解决600851475143的问题,但这需要花费很长时间才能给出结果。我认为这是因为它是一个如此大的数字。我永远不应该到这里,实际上,如果n=1,我应该到那里。谢谢你的回答。这一切都是有道理的。我永远不应该到这里。事实上,如果n=1,我应该到那里。谢谢你的回答。这一切都有道理。