b-a <= 1000),可以用簡單的篩選法來實現。
#include <iostream>
#include <cmath>
using namespace std;
// 判斷一個數字是否為質數
bool isPrime(int n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
for (int i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) return false;
}
return true;
}
int main() {
int a, b;
while (cin >> a >> b) {
int primeCount = 0;
for (int i = a; i <= b; ++i) {
if (isPrime(i)) {
++primeCount;
}
}
cout << primeCount << endl;
}
return 0;
}
isPrime(int n)**:n 是否為質數。n 小於等於 1,則不是質數。n 小於等於 3,則是質數。n 能被 2 或 3 整除,則不是質數。for 迴圈從 5 開始檢查,步長為 6,檢查 n 是否能被任一小於等於 sqrt(n) 的數字整除。main()**:a 和 b。primeCount 為 0。for 迴圈從 a 遍歷到 b,對每個數字調用 isPrime 函數進行檢查,如果是質數則計數器加 1。
3 7
6 6
30 50
3
0
5