1

テキスト フィールドへのユーザー入力を 10 ~ 120 の整数として受け入れる HTML ページを作成します。ユーザーが [表示] ボタンを押すと、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

これらの数値は 1 回だけ使用する予定なので、最小値/最大値をifステートメントに直接入力するか、値を保持する変数を作成するかは問題ではありません。ほとんどの人は、範囲を変更する必要がある場合に備えて、すべての変数を一番上に置いておくことをお勧めします。変数を見つけやすくなります。

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 の間でなければ何も起こらないという点で、これはインタラクティブなページ上にあることに注意してください。そのため、ユーザーに適切なフィードバックを提供することが非常に重要です。

人々が Web ページのボタンをクリックすると、何かが起こることを期待します。このため、ここでは次のような別のアプローチを取ることをお勧めします。

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 に答える