PAT: 1007 para la conjetura primer (c versión)

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 //

Publicado 24 artículos originales · ganado elogios 0 · Vistas 148

Supongo que te gusta

Origin blog.csdn.net/qq_45624989/article/details/105106409
Recomendado
Clasificación