Проблемы с Javascript для простых чисел - PullRequest
0 голосов
/ 28 февраля 2019

Итак, я пытаюсь использовать функцию, которая запрашивает ввод числа, а затем печатает все простые числа до этого числа.Насколько я знаю, у меня есть код, но я продолжаю получать сообщение о том, что скобка после простого (num) неверна.Не уверен, что я делаю не так, буду признателен за любую помощь.

function p5Bela() {
 var num = prompt("Please enter a number: ", "");
 for (i = 2; i <= num; i++) {
  if (prime(i)==true) {
  alert(i);
 }
}
prime(num) {
var flag = true;
var d = 2;
while (flag==true && d <= num/2) {
if (num%d == 0) {
  flag = false;
  }
    d++;
  }
  return flag;
 } 
}

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

штрих (num) должен быть вне функции p5Bela () body:

function p5Bela() {
    var num = prompt("Please enter a number: ", "");
    for (i = 2; i <= num; i++) {
        if (prime(i)==true) {
            alert(i);
        }
    }
}
function prime(num) {
    var flag = true;
    var d = 2;
    while (flag==true && d <= num/2) {
        if (num%d == 0) {
            flag = false;
        }
        d++;
    }
    return flag;
}
0 голосов
/ 28 февраля 2019

Simplest Way

function isPrime(num) {
      for(var i = 2; i < num; i++)
        if(num % i === 0) return false;
      return num > 1;
    }

С синтаксисом ES6:

const isPrime = num => {
  for(let i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num > 1;
}

Вы также можете уменьшить сложность алгоритма сОт O (n) до O (sqrt (n)), если вы запускаете цикл до получения квадратного корня из числа:

const isPrime = num => {
    for(let i = 2, s = Math.sqrt(num); i <= s; i++)
        if(num % i === 0) return false; 
    return num > 1;
}
...