¿Cuál es el mejor algoritmo para encontrar números primos? ¿Cuál es su sintaxis?

Dependerá de cuántos números primos necesite encontrar. Si puede conformarse con encontrar todos los números primos de menos de aproximadamente 2 mil millones, el Tamiz de Eratóstenes funcionaría muy bien y corre bastante rápido. Tampoco requiere ninguna matemática realmente elegante para que funcione.

Para comenzar, haga una matriz de 2 mil millones de ‘cajas’. Si intenta usar números enteros, corre el riesgo de quedarse sin memoria. Tiendo a usar un BitSet cuando está disponible, pero una matriz de caracteres también podría funcionar.

Ahora, marcaremos los ‘cuadros’ como primos o no, dependiendo del índice del cuadro. De esta manera no tenemos que almacenar los números reales, solo usaremos los índices.

Desactive todas las casillas para indicar ‘no primo’.

Ignora los cuadros 0 y 1 porque no pueden ser primos.

Comience con el primer cuadro mayor que 1 sin marcar. (Eso debería llevarlo al recuadro 2) Marque como primo y marque todos los múltiplos de 2 como no primo.

Ahora, encuentre el siguiente cuadro sin marcar (cuadro 3). Márquelo como primo y marque todos los múltiplos de 3 como no primo.

Continúe de esta manera y cuando haya terminado, habrá marcado todos los números primos de menos de 2 mil millones. Una computadora puede realizar todo esto en menos de 30 segundos.

He escrito buscadores principales como este en varios lenguajes, incluidos C # y Java, y tienen un rendimiento muy similar. Tiendo a usar esto como una prueba para mi aprendizaje de un nuevo lenguaje de programación y hay sitios web que puedes usar para validar tus resultados.

El mejor y el único algoritmo exitoso es la FACTORIZACIÓN

La Forma 6k + -1 no es un Algoritmo, sino un Patrón.

Sin embargo, hay métodos para encontrar los números primos de Mersenne (números primos de la forma (2 ^ p) + 1 , donde p también es un número primo)

No, porque no es una fórmula, y lo inverso no es necesariamente cierto (6 * 4 + 1 == 25 y no es primo). Es una condición de verificación.

Aquí hay algo equivalente: “Vivo en mi casa”. Dada esa información, puede saber que si se le presenta “yo”, “mi casa” es donde vivo. Sin embargo, no puede ir hacia otro lado: al comenzar con una persona que vive en mi casa, no tiene forma de saber si soy yo o algún otro residente.

Pero puede usarlo para simplificar su algoritmo de verificación de números primos. Si su algoritmo implica mirar un número y luego verificar todos los divisores posibles para ver si es primo, entonces puede ahorrar algo de tiempo primero verificando si el número mod 6 == (1 o 5). Ese es un cálculo de división adicional que garantiza eliminar 2/3 de su espacio de verificación. Eso es un gran ahorro de tiempo.

De todos modos, esos son algoritmos para implementar por diversión para ver si puedes hacerlo. Para cálculos reales, estoy bastante seguro de que los algoritmos de tamizado son el camino a seguir. Por ejemplo, mi favorito personal es el Tamiz de Eratóstenes: Wikipedia, que no estoy afirmando que sea el mejor algoritmo, pero es impresionante en su antigüedad, simplicidad y velocidad bruta.

More Interesting

En un microprocesador 8085, ¿cómo podemos encontrar el número de ciclos de la máquina y el número de estados T de cualquier mnemónico dado?

Cómo escribir mi propio algoritmo de cifrado / descifrado

Cómo implementar un árbol binario en Python

Resolví el problema de la Torre de Hanoi de una manera que no requiere conocer el movimiento anterior o siguiente. ¿Se ha hecho esto antes?

¿Cuál es la mejor manera de demostrar sus habilidades como ingeniero de software junior durante una entrevista que no sea la implementación de algoritmos sofisticados y estructuras de datos?

¿Cómo podemos solucionar esto?

Al modelar un autómata determinista de estado finito, ¿qué algoritmo de recorrido gráfico debe usarse?

¿Cómo se puede calcular su edad en días? Necesito el algoritmo más simplificado para resolverlo.

He estado tratando de aprender el análisis de algoritmos usando el libro CLRS, sin embargo, encuentro que ese libro es difícil de entender. ¿Soy el único?

Cómo mejorar mi solución Java para el problema 'nodo de hoja izquierda más profundo en un árbol binario'

¿Cuál es el método computacionalmente más eficiente para agregar todos los elementos de una matriz (o matriz)?

¿Cómo va a hacer que me gusten y me interesen los algoritmos (programación)?

¿Qué tan complejos son los algoritmos que usan los sitios web de citas como eHarmony para unir a las personas?

¿Cuál es el orden de lectura de estructuras de datos y algoritmos para un aprendizaje fluido?

¿Pueden los intrones tener longitudes que no sean múltiplos de 3 (lo que complicaría seriamente los algoritmos de predicción de genes)?