//Create a function that finds how many prime numbers there are, up to the given integer.
var numoffactor = 0
var count=0
function primenumber(str) {
    for (var i = 0; i < str; i++)
        for (var g = 0; g < i; g++) {
            if (i % g == 0) //if a factor is found
            { numoffactor++ }

        }
    if (numoffactor == 0) { count++ }
    return count
}
console.log(primenumber(9)) //showing 0 no matter what number I put in

console.log(numoffactor)//showing 12





我的逻辑是:从0到str,找到每个整数,每个i循环的因数,如果因数为零,则为质数。但是无论输入如何,输出都是9。而且许多因素似乎都没有了。

最佳答案

您缺少一些要点-


您不会将数字除以0。这是未定义的。
所有数字都可以被1整除。因此,您无需检查它。
您没有将每个数字的numoffactor重置为0
首先缺少循环括号。 numoffactor == 0检查必须
内循环。


var numoffactor = 0
var count = 0
function primenumber(str) {
    if(str <= 1)
        return 0;
    for (var i = 1; i < str; i++) {
      numoffactor = 0;
      for (var g = 2; g < i; g++) {
          if (i % g == 0){
            numoffactor++;
          }
      }
      if (numoffactor == 0) {
        count++;
      }
    }
    return count;
}

console.log(primenumber(9))
console.log(numoffactor)


这是另一种无需计算因子数量的解决方案。

var count = 1
function primenumber(str) {
    if(str <= 1)
        return 0;
    for (var i = 0; i < str; i++) {
      var g = 2;
      for (; g < i; g++) {
          if (i % g == 0)
            break;
      }
      if (i == g) {
        count++;
      }
    }
    return count;
}

console.log(primenumber(9))



首页这有帮助。

关于javascript - 创建一个函数,查找有多少个质数,直到给定的整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59217044/

10-13 00:18