Использование цикла forEach Создание простого числа в Javascript от 1 до 50 [дубликат]

Aug 20 2020

Вот мой код, но мой ответ не тот, который я хочу ..

Пожалуйста, отметьте это и дайте мне решение, чтобы получить простое число с помощью цикла по каждому элементу ч / б 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);

Ответы

1 KoalaYeung Aug 20 2020 at 14:07

Вероятно, это слишком сложный ответ для домашнего задания такого уровня, но технически он следует правилам (используйте 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>

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

Думаю, это правильный ответ, которого я заслуживаю .. Это короткий и агрессивный любитель кода.

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

Рассмотрим следующий пример.

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>