Вывод простых чисел JavaScript

105
22 мая 2021, 11:20

Условие: Напишите код, который выводит все простые числа из интервала от 2 до n. Для n = 10 результат должен быть 2,3,5,7.

let n = 20; 
for (let i = 2; i <= n; i++) { 
  for (let j = 2; j <= i; j++) { 
    if ((i % j == 0) && (j != i)) { 
      break; 
    } else { 
      console.log(i); 
      break; 
    } 
  } 
}

В этом решении выводит 2 3 5 7 9 Не могу понять, почему сюда попадает число 9. Подскажите, кто знает Заранее спасибо!

Answer 1

Вы совершенно зря увлекаетесь оператором break. Помимо очевидной ненужности в таком простом коде вы получаете совершенно не читаемый и плохо отлаживаемый код

алгоритм прост:

1) заведем flag=1 - число простое

2) переберем все делители числа от 2 до i/2 если нашли делитель, то flag=0 (составное) и прекратили перебор делителей

3) если flag=1 то число выводим

let n = 20;
for (let i = 2; i <= n; i++) {
  let flag=1;
  for (let j = 2; (j <= i/2)&&(flag==1); j=j+1) {
     if (i%j==0) {
         flag=0}
    }
  }
 if (flag==1) {console.log(i);}
}
Answer 2

Не надо проверять до i/2, как вам предложили - это слишком долго. До квадратного корня хватит!

let n = 20; 
 
for (let i = 2; i <= n; i++) { 
    let flag = 1; 
    if (i > 2 && i % 2 != 0) 
    { 
        for (let j = 3; j*j <= i ; j=j+2) 
        { 
            if (i%j==0) 
            { 
                flag=0; 
                break; 
            } 
        } 
    } 
    else if (i != 2) flag = 0; 
    if (flag==1) {console.log(i);} 
}

Answer 3
function isSimple (n) {
    if (n === 1 || n === 0) {
        return false;
    } else {
        for(let i = 2; i < n; i++) {
            if(n % i === 0) {
                return false;
            }
        }
        return true;  
    }
}
READ ALSO
Javascript съедает всю оперативку

Javascript съедает всю оперативку

Доброго времени суток!

106
Как запустить приложение, написанное на Qt C++, на другом ПК, где Qt нету?

Как запустить приложение, написанное на Qt C++, на другом ПК, где Qt нету?

У меня на моем ПК, все запускается без ошибокВ папку с

118
Определение класса без реализации

Определение класса без реализации

Что означает такая запись: class MyClass; ? объявление существующего класса без реализации

111