Javascript 我想对素数程序进行验证

Javascript 我想对素数程序进行验证,javascript,Javascript,如果用户在提示框中没有输入任何内容,那么它也会显示“num是prime”,我已经在下面进行了验证。另外,如果我在提示框中输入“1”,它仍然显示“numisprime” var Num=prompt(“输入数字”); var标志=0; if(isNaN(Num)){ 警报(“请输入有效号码”); } 对于(变量i=2;i0 isNaN功能不用于检查某个东西是否可以解释为数字。其目的是检查提供的值是否为特定的NaN值。我的建议是尝试将提示字符串转换为数字,并查看转换是否成功 var Num = pa

如果用户在提示框中没有输入任何内容,那么它也会显示“num是prime”,我已经在下面进行了验证。另外,如果我在提示框中输入“1”,它仍然显示“numisprime”

var Num=prompt(“输入数字”);
var标志=0;
if(isNaN(Num)){
警报(“请输入有效号码”);
}
对于(变量i=2;i令人恼火的是,
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
,并忽略后续的“ABC”


关于1的问题,您提供的代码似乎将所有奇数标记为素数。假设你写了一个决定奇数是否为素数的部分,你可以有一个特殊的例子说“如果这个数是1,它就不是素数。”这是因为在很多情况下,1就像素数一样。显然,这不是最优雅的解决方案,但是。。。它可以工作。

将flag=0和flag=1的if语句放在循环前面的顶部。学会正确缩进代码。它使执行流程更加清晰。另外,您误用了
IsNan
-这并不意味着用户没有输入数字。我不太清楚您的问题是什么……嗨,阿杰,欢迎来到Stack Overflow。不幸的是,所发布的问题的结构并不是以一种可以得到正确答案的方式。请回顾-记住,高质量的答案需要清晰、高质量的问题。为了清晰起见,也许可以查看链接,然后编辑此链接。欢迎再次光临,祝您愉快!将改进它,因为这是我关于堆栈溢出的第一个问题。无论是谁投票,你介意告诉我我可以改进什么吗?
isNaN
不是评估某个东西是否是数字,而是评估某个东西是否是值
NaN
。出于某种奇怪的原因不,这不是奇怪的原因。你(和海报)需要了解NaN的意思。这并不意味着用户没有输入数字。没有什么奇怪的。@EKW-这是一个行为稍有不同的函数,但“the
isNaN()
函数决定一个值是否为
NaN
。注意:
isNaN
函数中的强制有一些有趣的规则;您也可以使用
Number.isNaN()
,如ECMAScript 2015中所定义。“试图证明误用
IsNaN
是浪费时间。这不是确定是否输入了数字的合适方法。无论你多么努力地争辩说锤子是适合所有东西的工具,它都不是你用来替换破碎的窗格玻璃的工具。NaN有一个特定的含义,试图假装它意味着其他事情是愚蠢的。所以,请告诉我我的问题出了什么问题,然后当每个人都提供事实来解释问题时,请反对。
var Num = parseInt(prompt("Enter the Number"), 10);
if(Number.isNaN(Num)) {
    alert("please enter valid number");
}