Finding Prime Number: error: control reaches end of non-void function

Finding Prime Number: error: control reaches end of non-void function

我正在编码以查找质数并使用以下代码将结果提取为布尔值(true/false 或 1/0)。

#include <iostream>
using namespace std;

bool isPrimeNumber(int n) {
    int m, i;
    m = n / 2;
    for (i = 2; i < m; i++) {
        if (n % i == 0) {
            return true;
        } else {
            return false;
        }
    }
}
int main() {
    cout << isPrimeNumber(33);
    return 0;
}

(67是素数,结果应该是0)

(我跳过了负数和 0,1,但我稍后会添加)

然后第9行说"error: control reaches end of non-void function."

我试图在互联网上找到解决方案,当然还有 Whosebug。但我的代码仍然正确且可构建。

我认为这与将警告视为错误有关(我作为初学者在推荐下更改了它)。但我不想改回去,因为我还在学习。

你有没有办法在不将我的设置恢复正​​常的情况下解决这个问题?

当 n 为奇数时出现错误:

error: control reaches end of non-void function.

您正在检查 n 是否仅被一个值 i=2 整除。您必须检查 i 从 2 到 m 的每个值。

Return falsefor循环迭代完成后
如下更改 isPrimeNumber() 函数:-

bool isPrimeNumber(int n){
int m,i;
m = n/2;
    for (i=2;i<m;i++){
      if (n % i == 0){
         return true;
      }
    }
 return false;
}