为了账号安全,请及时绑定邮箱和手机立即绑定

使用 forEach 循环在 Javascript 中生成 1 到 50 之间的质数

使用 forEach 循环在 Javascript 中生成 1 到 50 之间的质数

PHP
森栏 2023-10-21 15:48:51
这是我的代码,但我的答案不是我想要的..请检查此并给我一个使用 Foreach 循环 b/w 1-50 获取素数的解决方案提前致谢 :)function isPrime(num) {    for ( var i = 2; i < num; i++ ) {        if ( num % i === 0 ) {            return false;        }    }    return true;}    var txt = "";    function shown(n) {        var arr = [2];        arr.forEach(myFunction);document.getElementById("foreach").innerHTML = txt;// document.getElementById('forLoop').innerHTML = arr; // use arr result on your own}function myFunction(arr, index, array) {var i;var arr = [2];if ( isPrime(i) ) {    arr.push(i);      }  txt += arr + "<br>"; }shown(50);
查看完整描述

4 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

对于这个级别的作业来说,这可能是一个太高级的答案,但从技术上讲,它遵循规则(使用 Array.forEach)并且有效。

primes()基于先前的素数生成新的素数。所以不会测试所有整数的提醒,从而更有效。为了保持简短,也有几种箭头函数的用途。如果您确实使用这个答案,请尝试阅读相关文档并了解:

  • 迭代器和生成器

  • 箭头函数表达式

  • 为了...的

  • 模板文字

认真地,试着一步一步地思考。这就是你学习任何东西的方式。

function* primes() {

  const previous = [];


  for (let i = 2; true; i++) {

    let isPrime = true;

    for (let p of previous) {

      if (i % p === 0) {

        isPrime = false;

        break;

      }

    }

    if (isPrime) {

      previous.push(i);

      yield i;

    }

  }

}


function* takeUntil(cb, iter) {

  for (let val of iter) {

    if (cb(val)) {

      return;

    }

    yield val;

  }

}


function showArrayIn(arr, container) {

  arr.forEach(p => container.innerHTML += `${p},<br/>`); // technically, we used Array.forEach.

}


showArrayIn(

  // get the prime number array declarativly 

  Array.from(takeUntil(n => n >= 50, primes())),

  // show in the container specified

  document.getElementById("results")

);

Primes:

<div id="results"></div>


查看完整回答
反对 回复 2023-10-21
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

考虑以下示例。


function isPrime(num) {

  if (num === 1) {

    return false;

  } else if (num === 2) {

    return true;

  } else {

    for (var x = 2; x < num; x++) {

      if (num % x === 0) {

        return false;

      }

    }

    return true;

  }

}


function shown(n) {

  var list = [];

  for (var i = 1; i <= n; i++) {

    list.push(i);

  }

  list.slice().reverse().forEach(function(n, k, o) {

    if (!isPrime(n)) {

      list.splice(o.length - 1 - k, 1);

    }

  });

  document.getElementById("show").innerHTML = list;

}


shown(50);

Prime: <p id="show"></p>


查看完整回答
反对 回复 2023-10-21
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

function primeFactorsTo(max)

{

    var store  = [], i, j, primes = [];

    for (i = 2; i <= max; ++i) 

    {

        if (!store [i]) 

          {

            primes.push(i);

            for (j = i << 1; j <= max; j += i) 

            {

                store[j] = true;

            }

        }

    }

    return primes;

}


console.log(primeFactorsTo(5));


console.log(primeFactorsTo(15));


查看完整回答
反对 回复 2023-10-21
?
ibeautiful

TA贡献1993条经验 获得超5个赞

我认为这是我应得的正确答案..这是代码爱好者的简短而激进的


function primes(limit)

{

  var prime=[], i=1;

  while (++i < limit+1) prime.reduce((a,c)=>(i%c)*a,1) && prime.push(i);

  prime.unshift(2);

  return prime;

}

[50].forEach(n=>document.getElementById('foreach').innerHTML=(`${primes(n)}`));


查看完整回答
反对 回复 2023-10-21
  • 4 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信