Usando forEach Loop Gerando número primo em Javascript entre 1 a 50 [duplicado]

Aug 20 2020

Aqui está o meu código, mas minha resposta não é a que eu quero ..

Por favor, verifique isso e me dê uma solução para obter o número primo usando Foreach Loop b/w 1-50

Desde já, obrigado :)

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);

Respostas

1 KoalaYeung Aug 20 2020 at 14:07

Esta é provavelmente uma resposta muito avançada para um dever de casa deste nível, mas tecnicamente segue as regras (use Array.forEach) e funciona.

O primes()gera novos primos com base nos primos anteriores. Portanto, não testará o lembrete de todos os números inteiros, portanto, mais eficiente. Também existem vários usos de função de seta para manter as coisas curtas. Se você realmente usar esta resposta, tente ler as documentações relevantes e aprenda:

  • Iteradores e Geradores
  • Expressões de função de seta
  • para de
  • Literais de modelo

Sério, tente pensar passo a passo. É assim que você aprende qualquer coisa.

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>

NikhileshAgrawal Aug 20 2020 at 12:54
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));
raoabdullah07 Aug 20 2020 at 13:55

Acho que esta é a resposta correta que eu mereço .. É um amante de código curto e agressivo

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)}`));
Twisty Aug 20 2020 at 12:54

Considere o seguinte exemplo.

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>