Javascript 下面的代码只生成一个输出true。如何调试它?
我有下面的代码来生成素数。但是,它不是生成素数,而是生成从2到输入函数的数字的整个列表。如何解决这个问题?Javascript 下面的代码只生成一个输出true。如何调试它?,javascript,function,Javascript,Function,我有下面的代码来生成素数。但是,它不是生成素数,而是生成从2到输入函数的数字的整个列表。如何解决这个问题? var i=2; var primeCheck=功能(编号){ 而(i只需在您想要发出警报的情况下使用primeCheck(11) 您的逻辑中有一些错误,当我尝试使用primeCheck(12)时,它并没有给出预期的结果 var i=2; var primeCheck=功能(编号){ 而(i返回警报的if条件使用不带参数的primecheck()运行。请将其更正为: 如果(检查(11))
var i=2;
var primeCheck=功能(编号){
而(i只需在您想要发出警报的情况下使用primeCheck(11)
您的逻辑中有一些错误,当我尝试使用primeCheck(12)时,它并没有给出预期的结果
var i=2;
var primeCheck=功能(编号){
而(i返回警报的if条件使用不带参数的primecheck()运行。请将其更正为:
如果(检查(11)){
警惕(“主要”)
}
还删除调用PrimeChChice(11)的最后一行。
< P>如果您想返回某个代码,请返回< <代码> >而不是<代码>警报;断开< /C> >。我将考虑重构这一点。首先,您永远不应该有一个执行依赖于外部变量的简单任务的功能。保持模块化。
function isPrime(num) {
for (var i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return num > 1
}
顺便说一句,您需要iWell,undefined
不是质数,因此您的函数不会返回true
,因此警报
不会被警报…您的意思是将数字传递到if(primeCheck())
…?@Bathsheba谢谢,我会把它放在里面的mind@deceze事实上,我想这样做。但是,如果我在函数声明中使用参数“number”,它会输出一个错误,表示“number未定义”您想在没有参数的情况下调用primeCheck
,并期望它返回true
?为什么?为什么“no number”是prime?如果将停止条件替换为i*i为什么要使用return num>1
?因为在循环中的这一点上,数字可以是{-无穷大…1}(不是质数)或2或任何其他素数。这是解释两者的最简单方法。如果该数大于1,则返回true,排除所有通过循环的潜在非素数。我明白了。感谢您提供的信息。事实上,我对编程非常陌生,所以我不知道如何优化我的代码。@Bathsheba我同意有许多优化方法可以帮助您t可以用于运行时,但这似乎超出了这个问题的范围。
function isPrimeText(num) {
return isPrime(num) ? "Prime" : "Not Prime"
}