我有以下代碼用於檢查前20個正數是否使用bool函數爲素數。質數的bool函數
#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;
}
}
它適用於從2 and 3
所有號碼1 to 20
除了在輸出爲0
,而不是1
。我想我知道爲什麼。對於x = 2 and 3
,for
迴路中沒有i
,因此i<=sqrt(2)
或i<=sqrt(3)
。
我該如何修改代碼才能使用這些值?
此外還有一個錯誤消息"Control may reach end of non-void function"
。爲什麼是這樣?
謝謝。
對於印刷purpuse,您可以添加修改[性病:: boolalpha(HTTP://en.cppreference。 com/w/cpp/io/manip/boolalpha)輸出到輸出行,以純文本形式輸出布爾值。 'cout << x <<「a prime?」<< std :: boolapha << prime(x)<< endl;' – tomahh