Calidad de juicio (número primo) Python

La primera es la definición de números primos de la Enciclopedia Baidu :

Los números primos también se denominan números primos. Un número natural mayor que 1, excepto 1 y él mismo, el número que no puede ser divisible por otros números naturales se llama número primo; de lo contrario, se llama número compuesto (siempre que 1 no sea ni un número primo ni un número compuesto) .

Entonces, cómo usar el programa para determinar si un número es un número primo.

versión inicial:

El método de juicio más primitivo es usar un bucle for para atravesar cada número. Este método es ciertamente factible, pero si se usa para la pregunta A, me temo que la velocidad para resolver el problema no es ideal.

versión mejorada:

Piénselo, 1*3y 3*1es lo mismo, entonces cuando hacemos un bucle para determinar si este número es un número primo, solo necesitamos hacer un bucle a la raíz de este número.

import math
math.sqrt(n)

Versión definitiva:

Observe de nuevo, excepto por la 2suma 3, todos los números primos están cerca de múltiplos de 6, ya sea 6-1 o 6 + 1;

6n+(0): Definitivamente 3divisible
6n+2: Definitivamente 2divisible
6n+3: Definitivamente 3divisible
6n+4: Definitivamente 2divisible
Sólo la 6n+1suma 6n+5(es decir 6n-1) es indeterminada.

Entonces, antes de ejecutar el ciclo, puede juzgar si este número es 6n + 1 o 6n-1; es decir, si (n + 1)% 6 y (n-1)% 6 son iguales a 0.

El código final es el siguiente:

def isPrime(n):
    if n <= 3:
        return n >= 2
    else:
        if (n + 1) % 6 != 0 and (n - 1) % 6 != 0:
            return False
        for i in range(2, int(math.sqrt(n)) + 1):	# math.sqrt返回值是浮点型,所以要加一个int()
            if n % i == 0:
                return False
    return True

Si tiene una idea o idea mejor, ¡bienvenido a agregar!

Supongo que te gusta

Origin blog.csdn.net/weixin_44289959/article/details/111240159
Recomendado
Clasificación