我有以下代码用于使用 bool 函数检查前 20 个正数是否为素数。
#include <iostream>
#include <cmath>
using namespace std;
bool prime(int);
/*
function to evaluate whether a positive integer is prime (true)
or not prime (false)
*/
int main()
{
for(int x=1; x<=20; x++)
{
cout << x << " a prime ? (1 yes, 0 no) "
<< prime(x) << endl;
}
return 0;
}
bool prime(int x)
{
for(int i=2; i<= sqrt(x); i++)
{
if ((x%i) != 0)
return true;
else
return false;
}
}
它适用于所有数字1 to 20
,除了2 and 3
输出的位置0
而不是1
. 我想我知道为什么。因为在循环x = 2 and 3
中没有这样or 。i
for
i<=sqrt(2)
i<=sqrt(3)
我如何修改代码以便它也适用于这些值?
还有一条错误消息"Control may reach end of non-void function"
。为什么是这样?
谢谢。