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
i
for
i<=sqrt(2)
i<=sqrt(3)
これらの値でも機能するようにコードを変更するにはどうすればよいですか?
エラーメッセージもあります"Control may reach end of non-void function"
。どうしてこれなの?
ありがとう。