如何使这个功能打印之间的10月2日至10日的素数,而不是数

时间:2019-01-31 16:01:04

标签: javascript

当前打印2到10之间的数字。
我有一段时间(N)循环尝试过,但它不工作。 https://jsfiddle.net/xv2qjkm8/6/

function prime(n) {
      for (var i = 2; i < n; i++) {
        if (isPrime(i)) {
          document.write(i + " ");
        }
      }
    }

    prime(10);

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

3 个答案:

答案 0 :(得分:0)

您需要计算找到的质数,因此请使用while(n),但不要忘记仅在找到质数时才将其减小。

function prime(n) {
  var i = 2;

  while (n) {
    if (isPrime(i)) {
      document.write(i + " ");
      n--;
    }
    i++;
  }
}

prime(10);

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

答案 1 :(得分:0)

在这里循环运行,而n为true(0为false),每次我们发现素数时,我们都会递减n

function prime(n) {
          for (var i = 2;n; i++) {
            if (isPrime(i)) {
              document.write(i + " ");
              n--;
            }
          }
        }



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

        prime(10);

答案 2 :(得分:0)

您可以使用一个策略这样既写文档,并检查了多少个号码已经发现通过使一个单独的函数

function print_primes(array, size) => {
   if (array.length == size) { document.write(array.join(" ")); return true; } 
   return false;
}

function prime(n) {
   let array = [];
   let i = 1;
   while (print_primes(array,n) == false) {
     while (isPrime(i) == false) {
       i++;
    }
    array.push(i);
  }

}

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


príme(10);