[PAT 乙级]1007 素数对猜想 (20 分)
1007 素数对猜想 (20 分)
用素数打表实现prime记录所有素数即可。
void getprime(int n) {
book[1] = book[0] = 1;
for (int i = 2; i <= n;i ++) {
if (book[i] == 0) {
prime.push_back(i);
for (int j = i + i; j <= n; j += i) {
book[j] = 1;
}
}
}
}
代码如下:
#include<iostream>
#include<vector>
using namespace std;
vector<int >prime;
bool book[100010];
void getprime(int n) {
book[1] = book[0] = 1;
for (int i = 2; i <= n;i ++) {
if (book[i] == 0) {
prime.push_back(i);
for (int j = i + i; j <= n; j += i) {
book[j] = 1;
}
}
}
}
int main () {
int n, cnt = 0;
cin >> n;
getprime(n);
prime.push_back(99999999);
for (int i = 1;prime[i] <= n; i++) {
if(prime[i] - prime[i - 1] == 2) {
cnt ++;
}
}
cout << cnt;
return 0;
}