请解释一下这个C ++循环逻辑

时间:2014-08-22 03:50:56

标签: c++

我创建了一个名为" 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

4 个答案:

答案 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并退出函数