"Número primo" para juzgar los números primos (método más rápido C ++)

Prefacio

  Para ser honesto, siento que también he pasado por alto 1.200 preguntas y algunas preguntas han sido rechazadas una y otra vez, pero todavía hay sí o no, y no o no. Así que pensé si había algún problema con mi modo de hacer preguntas. A continuación se muestra mi estilo anterior de hacer preguntas,

Oye, todavía sigo el viejo camino del tercer grado, que es cepillar las preguntas, no resumir, no clasificar, solo perseguir la cantidad. Para mejorar esta situación, decidí resumir y clasificar para poder avanzar.

Tema:

bool isPrime(int a) {
    if(a == 1) return 0;
    if(a == 2 || a == 3) return 1;
    if(a%6 != 1 && a%6 != 5) return 0;
    int sqrtA = sqrt(a);
    for(int i = 5; i <= sqrtA; i += 6) {
        if(!(a%i)|| !(a%(i+2))) return 0;
    }
    return 1;
}

  Análisis de pensamiento: La regla es clasificar los números mayores o iguales a 5 por% 6, habrá 6 casos donde el resto es 0, 1, 2, 3, 4 y 5, entre estos seis casos, 0, 2, 3, 4 no son aceptables Sí, hay números divisibles uniformemente, y solo se satisface 1, 5, entonces el tipo de números con el resto de 1, 5 se registran como tipo A para juicio, siempre y cuando no sean divisibles por el número de tipo A más pequeño que ellos mismos, puede Explique que este número es primo. La complejidad de tiempo (sqrt (n) / 3) es equivalente a solo juzgar un número menor que 1/3 de sqrt (n).

Pensando:

  ¡Pensar antes de hacer las cosas ahorrará tiempo en la mayoría de los casos!

Supongo que te gusta

Origin blog.csdn.net/Look_star/article/details/109190923
Recomendado
Clasificación