javascript - 为什么这里的“if”条件有效?
问题描述
这里的代码检查从 2 到 n 的素数:
<script>
function showPrimes(n) {
for (let i = 2; i < n; i++) {
if (!isPrime(i)) continue;
alert(i); // a prime
}
}
function isPrime(n) {
for (let i = 2; i < n; i++) {
if ( n % i == 0) return false;
}
return true;
}
</script>
但我不明白为什么它适用于数字 2 并在 n 和 i 都等于 2 时返回 false 而其他素数则不会发生。我是 javascript 新手(和一般编程),据我了解,这段代码从第一个循环中的第一次迭代中获取 i(在“showPrimes”函数上)并将其作为参数放在“isPrime”函数中该函数在“if”条件下变为“n”,并检查当它从“isPrime”循环中除以 i 时是否有余数,因此 (n % i == 0) 应该是 (2 % 2 == 0) 在第一次迭代中,对吗?如果是这样,为什么它就像其他素数一样工作,这些素数显然是假的,不像 (2 % 2 == 0) 是真的......
我在这里想念什么?抱歉,如果这是一个明显/愚蠢的问题,这是我第一次学习与编程相关的任何东西。
解决方案
function isPrime(n) {
for (let i = 2; i < n; i++) {
当 n=2 时;我=2;不会进入上述循环。
推荐阅读
- java - 如何使用 Firebase 从上传的文件中获取下载 url
- tensorflow - sparse_categorical_crossentropy 的标签平滑
- c++ - 未解析的外部符号(所有符号都已定义!)
- rest - 如何在 Selenium UI 测试运行期间获取响应正文
- javascript - 使用 fromLonLat() 中的变量放置 openlayers 标记(节点 js)
- python - 如何使用python提取具有相同类的所有数据
- python - SQL选择所有日期范围都存在的特定列
- javascript - 无法使用 Next.js 正确进行提取
- python - 如何使用python对二维数组进行冒泡排序
- templates - Kotlin:具有通用约束的委托