我正在編寫程序來計算並顯示前50個「辣椒」中素數的數量。必須有2個用戶定義的函數「isPrime」和「primeCount」。看起來「primeCount」在每個計數上都追加4469969。當我將它粘貼到主函數中時,它並沒有這樣做。用戶定義的函數在C++中返回錯誤的計數
int main(){
long x = 1;
long y = 1000;
char reply;
cout << "Start End Number of Primes" << endl;
while (y <= 50000)
{
cout << x << " " << y << " ";
cout << primeCount(x, y) << endl;
x = 1000 + x;
y = 1000 + y;
}
//exits the program
cout << "Enter q to quit... ";
cin >> reply;
return 0;
}// End main function
bool isPrime(long n)
{
long i = 2;
if (n == 1)
return false;
if (n == 2)
return true;
if (n == 3)
return true;
if ((n % 2) == 0)
return false;
if ((n % 3) == 0)
return false;
while (i < n)
{
if (n % i == 0)
{
return false;
}
else
{
i++;
}
}
return true;
}
long primeCount (long x, long y)
{
long count = 0;
while (x < y)
{
if (isPrime(x) == 1)
{
count++;
}
x++;
}
cout << count;
}
你的函數'primeCount()'不返回任何東西,它有一個'cout'語句。另外,你的'isPrime()'返回一個'bool',但你將這個值與'1'比較。 – chrisaycock
難道你不想在'primeCount'中返回'count'而不是輸出值嗎? – Ares
您正在使用cout << primeCount(x,y)<< endl;但它不會返回真正的primeCount值。 –