素数的Javascript函数问题

时间:2019-02-28 19:31:10

标签: javascript function button primes

所以我要尝试使用的功能是提示输入数字,然后打印所有素数直到该数字。据我所知,我有代码,但是我不断收到一个错误,即prime(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 :(得分:0)

最简单的方法

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

答案 1 :(得分:0)

prime(num)应该超过函数p5Bela()的主体:

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