创建一个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 :(
答案 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);
}
}
使用这种方法,用户在输入无效数字时会收到有用的反馈,而不会发生任何事情。