我正在处理来自Code Golf的代码,并且正在压缩一个脚本,该脚本找到两个素数,其总和是用户选择的整数。
a=prompt();function b(n){for(i=2;i<n;i++)if(n%i<1)return;return 1}for(c=2,r=1;c<a&&r;c++)if(b(c)&&b(a-c))alert(a+": "+c+" + "+(a-c)),r=0
我尝试将第一个for循环更改为:
for(i=2;1;i++)
但这破坏了代码。事实证明for(i=2;true;i++)
也不起作用。但是i<n
会产生true
。为什么我可以i<n
而不是true
?
答案 0 :(得分:4)
你根本不需要任何价值!这将有效,
for(i=2;;i++)
编辑您的断言不正确。当循环必须终止时,表达式i<n
会产生错误。
for (i=2;;i++) {
if (i >= n) break; // <-- Added break, and inverted the test.
// as before....
}
答案 1 :(得分:0)
i<n
小于i
时, n
才会生成true。由于您的循环每次循环都会递增i
,i
最终不会小于n
,然后循环将停止。