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