如何找到在JavaScript中使用循环的主要因素? [英] How to find prime factors using a for loop in Javascript?

查看:137
本文介绍了如何找到在JavaScript中使用循环的主要因素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的JavaScript,并试图找到一个数字的主要因素,下面记录为'整数'在JavaScript中使用循环。我似乎无法得到它的工作,我不知道这是我的JavaScript还是我的计算逻辑。我试图添加评论,以便您可以看到我的程序当时在做什么。纠正我,如果我错了。

任何帮助将不胜感激。这里是我的代码:



// integer是我们正在查找的值prime elementsvar integer = 13195; var primeArray = []; //找到以2for开始的除数(i = 2; i


解决方案

以下是一个可行的解决方案:

 



你们走的很正确。有两个小错误。对 integer - 1 的评估似乎是不正确的。我相信在你的外部中为循环更合适的评估是< = integer 。这是因为当你将你的整数除以 integer / = i 时,结果是最后的整数求值是 29 。在这种情况下,最终的主要分支也是 29 ,因此需要被评估为 <= <至于为什么最后的日志统计不起作用,有一个简单的打字错误

primeArray [i] 反对 primeArray [k]


I'm new to javascript and was trying to find the prime factors of a number, recorded below as 'integer' using a for loop in javascript. I can't seem to get it working and I'm not sure whether it's my javascript or my calculation logic. I tried to add comments so that you can see what I think my program is doing at that time. Correct me if I'm wrong.

Any help will be appreciated. Here's my code:

//integer is the value for which we are finding prime factors
var integer = 13195;

var primeArray = [];

//find divisors starting with 2

for (i = 2; i < integer/2; i++) {
  if (integer % i == 0) {

    //check if divisor is prime
    for (var j = 2; j <= i / 2; j++) {
      if (i % j == 0) {
        isPrime = false;
      } else {
        isPrime = true;
      }
    }

    //if divisor is prime

    if (isPrime == true) {
      //divide integer by prime factor & factor store in array primeArray
      integer /= i
      primeArray.push(i);
    }
  }
}

for (var k = 0; k < primeArray.length; k++) {
  console.log(primeArray[k]);
}

解决方案

Here's a working solution:

//integer is the value for which we are finding prime factors
var integer = 13195,
    primeArray = [],
    isPrime;

//find divisors starting with 2

for(i = 2; i <= integer; i++){
  if (integer % i==0) {

    //check if divisor is prime
    for(var j = 2; j <= i/2; j++) {
      if(i % j == 0) {
        isPrime = false;
      } else {
        isPrime = true;
      }
    }

    //if divisor is prime

    if (isPrime == true) {
      //divide integer by prime factor & factor store in array primeArray
      integer /= i
      primeArray.push(i);
    }
  }   
}

for (var k = 0; k < primeArray.length; k++) {
  console.log(primeArray[k]);
}

You were very much on the right track. There were a two minor mistakes. The evaluation of integer - 1 seemd to be incorrect. I believe the more appropriate evaluation is <= integer in your outer for loop. This is because when you divide your integer below integer /= i, this results in the final integer evaluation to be 29. The final prime divsor in this case is also 29 and as such will need to be evaluated as <= as oppose to < integer - 1.

As for why the final log statment isn't working, there was a simple typo of primeArray[i] as oppose to primeArray[k].

这篇关于如何找到在JavaScript中使用循环的主要因素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆