我创建了一个名为" isPrime()"的自定义布尔函数,有些我如何使它工作,但我不知道它为什么有效,任何用简单英语解释都会受到赞赏。
for (i = 3; i < 100; i++)
{
if (isPrime(i))
{
std::cout << i << "\n";
}
}
// I don't understand why this loop works:
bool isPrime (int i)
{
int j;
for (j = 2; j < i; j++)
{
if (i % j == 0) // 3 / 2
{
return false;
}
}
return true;
}
正如您所看到的, isPrime()函数有一个循环,所以一旦完成,它应该返回 true ,因为返回true ; 在循环之外,编译器将在循环结束后读取返回true; 。 isPrime()函数如何在结尾返回true时返回 false ?
答案 0 :(得分:2)
如果一个函数在任何时候到达return
语句,它将完全退出,无论return语句在哪里,并且控制将转到调用它的函数(在这种情况下,我假设为main )。
答案 1 :(得分:0)
检查此代码段。
if (i % j == 0) // 3 / 2
{
return false;
}
由于此代码段,当数字可以被j的值整除而没有任何余数时,函数将返回FALSE。 只要if条件为true,函数返回 FALSE 。如果方法永远不会出现在if条件的内部,那么它将返回 TRUE
答案 2 :(得分:0)
当我%j == 0
时它将返回false并且循环完成
然后最后一个语句“return true”将不会运行
答案 3 :(得分:0)
该函数在执行时只返回一次:并在执行返回时退出到被调用的函数
逻辑是:
a prime number是素数可以除以余数,只能自己和1:
所以当i % j == 0
为真时意味着j
是因子i
因此它不是素数因此返回false并退出函数