7-55 Conjetura del par de números primos (20 puntos)
Definamos d
n
como: d
n
= p
n + 1
−p
n
, donde p
i
es el i -ésimo número primo. Obviamente, d
1
= 1, y d
n
es par para n> 1 . La "conjetura de los pares primos" cree que "hay infinitos pares de números primos adyacentes con una diferencia de 2".
Ahora, dado cualquier entero positivo N (<10
5
), cuente el número de pares de números primos que no exceden N que satisfacen la conjetura.
Formato de entrada:
introduzca un número entero positivo N en una línea.
Formato de salida:
muestra el número de pares de números primos que no exceden N y satisfacen la conjetura en una línea.
Muestra de entrada:
20
Muestra de salida:
4
Análisis: El
tamiz de Ehrlich 0 1 no es un tamiz de superposición de números primos;
#include<bits/stdc++.h>
using namespace std;
int prime[100009],book[100009];
void func(){
int t=0;
memset(book,1,sizeof(book));
book[0]=0,book[1]=0;
for(int i=0;i<=(100009);i++){
if(book[i]){
prime[t++]=i;
for(int j=2*i;j<=100009;j+=i)
book[j]=0;
}
}
}
int main(){
int n,sum=0;
cin>>n;
func();
for(int i=1;;i++){
if(prime[i]>n){
cout<<sum;
return 0;
}
if(prime[i]-prime[i-1]==2)sum++;
}
return 0;
}