【发布时间】:2019-02-28 19:31:09
【问题描述】:
所以我想做的是使用一个函数来提示输入一个数字,然后打印所有素数直到那个数字。据我所知,我有代码,但我不断收到错误消息,即 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;
}
}
【问题讨论】:
-
你的意思是
function prime(num){?另外——你的算法效率极低。正确的sieve 实现起来并不难,如果你坚持测试每个数字,你的主要测试算法做的工作太多了。 -
prime(num)无效,改为function prime(num) -
您在
prime(num)之前错过了function关键字。作为另一个提示,你可以return false;而不是flag = false;,只要你找到一个你知道这个数字不是素数的因子,但你的函数将继续循环遍历直到num的所有数字。这仍然不是一个有效的算法,但这样做会大大改善它。 -
在 prime() 函数中,您正在检查
num/2。但是您只需要检查到Math.sqrt(num2). 以查看 num 是否为素数。也就是说,对于 101,您只需要检查最多 10 的除数。
标签: javascript function button primes