Definamos D
n-
como: D
n
= P
. N- + 1
-p
n-
, donde P
i
es el i-ésimo número primo. Claramente D
. 1
=. 1, y para n> 1 con una D
n-
es un número par. "Primes adivinar" que "no hay un número infinito de al lado y pobres es un número primo 2."
Ahora dado un positivo arbitrario número entero N (<10
. 5
), no excede de calcular el número N satisface la conjetura de los números primos.
Formatos de entrada:
en una sola línea se da N. entero positivo
Formato de salida:
salida de la serie de los números primos no más de N satisface es una conjetura en una fila.
de entrada de la muestra:
20
Resultado de muestra:
4
El primer método: En primer lugar encontrar todos los números primos y luego comparar
#include <stdio.h>
const int difference = 2;
int isPrime(int n);
int main()
{
int i, k, n, len, count = 0;
int a[100000]; //开的过小也可能会由点过不去
scanf("%d", &n);
for (k = 0, i = 2; i <= n; i++) //不超过n,不要忘记等于号,否则会有一个点过不去
if (isPrime(i))
a[k++] = i;
len = --k;
for (i = 0; i < len; i++)
{
if (a[i + 1] - a[i] == difference)
count++;
}
printf("%d", count);
return 0;
}
int isPrime(int n)
{
int i;
if (n <= 1)
return 0;
for (i = 2; i * i <= n; i++)
if (n % i == 0)
return 0;
return 1;
}
El segundo método en la búsqueda de comparación lado
Para ser añadido //