查找素数:错误:控制到达非无效函数的结尾

我正在编码以查找素数,并使用以下代码将结果提取为布尔值(真/假或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;
}

(这里的结果应该为0,因为67是质数)

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

然后在第9行上说:“错误:控制到达非void函数的末尾。”

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

我认为这与将警告视为错误有关(我根据初学者的建议进行了更改)。但由于我仍在学习,我不想改回来。

您是否有办法解决此问题而又不将我的设置恢复为正常?

heiseseo 回答:查找素数:错误:控制到达非无效函数的结尾

当n为奇数时,会出现错误:

  

错误:控制到达非空函数的末尾。

您正在检查 n的除数是否只有一个值i = 2 。您必须检查从2到m的每个i值。

for循环的迭代完成后返回 false
如下更改您的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;
}
本文链接:https://www.f2er.com/3082236.html

大家都在问