如何显示给定限制中存在的所有素数

时间:2012-09-11 05:39:19

标签: javascript

创建一个HTML页面,接受用户输入到文本字段中的整数介于10和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;

}

但它可以显示超过120 :(

2 个答案:

答案 0 :(得分:0)

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

由于您只计划使用这些数字一次,因此如果您直接在if语句中输入最小值/最大值,或者如果您创建一个变量来保存该值,则无关紧要。大多数人建议将所有变量保持在最顶层,以备需要更改范围时:更容易找到它们。

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

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

答案 1 :(得分: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);
    }
}

使用这种方法,用户在输入无效数字时会收到有用的反馈,而不会发生任何事情。