我想对质数计划进行验证

时间:2018-03-10 04:28:50

标签: javascript

如果用户在提示框中没有输入任何内容,那么它也显示“数字是素数”,我已在下面进行验证。此外,如果我在提示框中输入“1”,它仍然显示“数字是素数”。

    var Num = prompt("Enter the Number");

    var flag = 0;

   if (isNaN(Num)) {
        alert("please enter valid number");
    }

    for (var i = 2; i < Num; i++) {
        if (Num % 2 === 0) {
            flag = 1;
            break;
        }
    }

    if (flag === 0) {
        alert("The num is prime");
    } 
    else if (flag === 1) {
        alert("The num is not prime");
    }

1 个答案:

答案 0 :(得分:-1)

令人讨厌的是,isNaN("")返回false,好像""是一个数字。要解决空提示问题,您需要检查Num.length > 0

isNaN函数不用于检查某些内容是否可以解释为数字。它旨在检查提供的值是否是特定的NaN值。我的建议是尝试将提示的字符串转换为数字,看看转换是否成功。

var Num = parseInt(prompt("Enter the Number"), 10);
if(Number.isNaN(Num)) {
    alert("please enter valid number");
}

请注意:这不会确保所有提供的值都有效。例如,parseInt("ABC123")将按预期返回NaN,但parseInt("123ABC")将返回123并忽略后续&#34; ABC&#34;。

关于1s的问题,您提供的代码似乎将所有奇数标记为素数。假设你已经编写了确定奇数是否为素数的部分,你可以有一个特殊情况说&#34;如果数字是1,它就不是素数。&#34;这是因为出于多种目的,1就像素数一样。显然,它不是最优雅的解决方案,但......它有效。