Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript checkPrime函数返回不正确的值_Javascript - Fatal编程技术网

Javascript checkPrime函数返回不正确的值

Javascript checkPrime函数返回不正确的值,javascript,Javascript,number=[]; 对于(x=1;x我重写了代码以提供正确答案 number=[]; 对于(x=1;x,在检查完所有数字直到其自身为-1之前,您将放入说明该数字为素数的'else'子句 为了达到最佳效果,不需要循环到数字(167时,可以看到167为素数,因此可以停止并安全地确认167为素数 对于2号,有一个单独的案例是正确的 以下是检查单个值是否为素数的代码: 函数checkPrime(num){ 如果(num==1 | | num==0){ 返回“这是一个单独的案例” } 如果(num=

number=[];

对于(x=1;x我重写了代码以提供正确答案

number=[];

对于(x=1;x,在检查完所有数字直到其自身为-1之前,您将放入说明该数字为素数的'else'子句

为了达到最佳效果,不需要循环到数字(167时,可以看到167为素数,因此可以停止并安全地确认167为素数

对于2号,有一个单独的案例是正确的

以下是检查单个值是否为素数的代码:

函数checkPrime(num){
如果(num==1 | | num==0){
返回“这是一个单独的案例”
}
如果(num==2){
return num+'是prime'
}
for(var i=2;i警报(checkPrime(27));
我已经重写了您的代码并做了一些更改

您遇到问题的原因是您在for循环中返回,这意味着所有奇数都将声明自己为素数

我已经解决了这个问题,但我也重新安排了一些事情,以尽可能提高效率尽快保释是件好事,所以我做了几次检查,以保释最初我检查数字是否在范围内,如果不是保释

我已经对代码进行了注释,因此它是有意义的,但是如果您不理解我为什么做了一些事情,请随时提问

//将0到10000之间的所有数字组成一个数组
数字=[];

对于(x=0;x
if(num%i==0)返回num+'不是prime';否则{return num+'是prime';}
这意味着您在对照
i
的第一个值检查num后立即返回,同时您需要验证循环的所有值。如果该数字可以除以
i
的任何值,则它不是素数。顺便说一句,我不知道这个
numbers
应该做什么,但它似乎效率很低。首先最重要的是,您可以在循环之外进行检查(因为数字或num不会改变),但更重要的是,如果(num>=1&&num您可以做的其他简单优化是让
i
只从2运行到
num/2
,并在某些条件下提前退出,比如num是偶数。无论如何,我离题了;第一条评论中提到了这个问题。在进行优化之前,我会先解决这个问题。@GolezTrol一些更琐碎的优化s i+=2跳过偶数,实际上很容易证明检查i i <代码> s,否则函数会考虑4和8素数。是的,我同意,我删除了这个数组。这是我的第一个(半)严重JS程序,我想让它对我说清楚:如果你想尽快保释,也许最好做简单的检查(0, 1,也许2)。首先,然后检查
数字。indexOf
。即使对程序员来说,代码量大致相同,但对计算机来说,简单地检查一个数字要比遍历整个数组容易得多,因此在优化时,也要考虑到这类决策。完全消除它是在这一特定情况下不过,案例确实是最好的方法。