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*3
y 3*1
es 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 2
suma 3
, todos los números primos están cerca de múltiplos de 6, ya sea 6-1 o 6 + 1;
6n+(0)
: Definitivamente 3
divisible
6n+2
: Definitivamente 2
divisible
6n+3
: Definitivamente 3
divisible
6n+4
: Definitivamente 2
divisible
Sólo la 6n+1
suma 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!