Использование цикла forEach Создание простого числа в Javascript от 1 до 50 [дубликат]
Вот мой код, но мой ответ не тот, который я хочу ..
Пожалуйста, отметьте это и дайте мне решение, чтобы получить простое число с помощью цикла по каждому элементу ч / б 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);
Ответы
Вероятно, это слишком сложный ответ для домашнего задания такого уровня, но технически он следует правилам (используйте 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>
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));
Думаю, это правильный ответ, которого я заслуживаю .. Это короткий и агрессивный любитель кода.
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)}`));
Рассмотрим следующий пример.
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>