1

创建一个 HTML 页面,它接受用户在文本字段中输入的 10 到 120 之间的整数。当用户按下“显示”按钮时,您在 JavaScript 中创建的函数应该能够显示 1 到 120 之间的所有素数。

例子

输入整数:20

该函数应返回: 1, 2, 3, 5, 7, 11, 13, 17, 19

function primeNumbers(){
var p;
var n = document.primeForm.primeText.value;
var d;
var x;
var prime;
var displayAll = 2 + " ";
for(p = 3; p <= n; p = p+2){
    x = Math.sqrt(p);
    prime=1;
    for(d = 3; prime && (d <= x); d = d+2)
    if((p%d) == 0)
        prime = 0;
    else
        prime = 1;
    if(prime == 1){ 
        displayAll = displayAll + p + " ";
    }
}
document.primeForm.primeArea.value = displayAll;

}​</p>

但它可以显示超过 120 :(

4

2 回答 2

0

for循环是一切发生的地方。因此,如果该值超出您想要的范围,则不要让for循环执行。为此,请在循环if周围放置一个语句。for

由于您只打算使用这些数字一次,因此无论您是直接在if语句中输入 min/max 还是创建一个变量来保存该值都没有关系。大多数人建议将所有变量保留在顶部,以防您需要更改范围:更容易找到它们。

关于if语句:n是决定是否执行for循环的因素。这是声明:if (n >= 10 && n <= 120) { insert the for loop here }。您所做的只是检查输入是否大于或等于 10 并检查输入是否小于或等于 120。

注意:如果您不希望显示任何内容,则在语句for中输出结果的循环之后包含该行。if

于 2012-09-11T05:56:04.873 回答
0

虽然 Rhyono 的建议会奏效,除非n在 10 到 120 之间,否则什么都不会发生,请记住这是在交互式页面上,因此给用户适当的反馈非常重要

当人们点击网页上的按钮时,他们期望会发生一些事情。出于这个原因,我建议您在这里采取不同的方法,如下所示:

function displayClicked()
{
    var n = document.primeForm.primeText.value;

    if (n < 10 || n > 120)
    {
        // Display an appropriate error to the user like:
        // "n must be between 10 and 120."
    }
    else
    {
        primeNumbers(n);
    }
}

使用这种方法,用户在输入无效数字时会收到有用的反馈,而不是什么都没有发生。

于 2012-09-11T06:12:17.870 回答