¿Alguien puede ayudarme a crear un algoritmo simple que determine si un número es primo o no?

Si desea probar si [math] p [/ math] es primo, verifique si [math] p [/ math] divide equitativamente [math] 2 ^ p-2 [/ math]. Cada primo satisface esto, y solo unos pocos compuestos lo satisfacen. Si desea tener más confianza, marque [matemática] 3 ^ p-3 [/ matemática] también. Incluso menos compuestos satisfacen a ambos. Si desea más confianza, continúe verificando si [math] p [/ math] divide equitativamente los números de la forma [math] a ^ pa [/ math]. Cada primo [math] p [/ math] dividirá cada uno de estos números de manera uniforme, sin importar qué [math] p [/ math] o [math] a [/ math] elijas. Desafortunadamente, hay números compuestos extremadamente raros que TAMBIÉN satisfacen esto, por lo que no es un algoritmo infalible. Sin embargo, estos números se llaman números de Carmichael y hay una lista bastante completa de ellos en línea. Por supuesto, no es una lista completa porque también hay infinitos números de Carmichael. Sin embargo, está bien porque aparecen extremadamente raramente. Si eliges un número aleatorio, apostaría a que sea un número de Carmichael.

Básicamente, hay dos pasos
1) Verifique para asegurarse de que su número no sea un número de Carmichael. Si es así, entonces es automáticamente compuesto.
2) De lo contrario, pruebe continuamente para ver si su número [matemática] p [/ matemática] divide equitativamente los números de la forma [matemática] a ^ pa [/ matemática]. Con cada [matemática] a [/ matemática] que prueba, gana más confianza en que [matemática] p [/ matemática] es primo.

Aquí hay un par de videos que lo explican con un poco más de detalle:

Ahora, si querías factorizar un número, esa es una historia completamente diferente y te deseo suerte.

Como han dicho otros, solo tiene que verificar los números 2 -> sqrt (n) para ver si n es primo. Si la memoria no es un problema, puede guardar y usar la ley fundamental de la aritmética. Guarde cada primo y solo verifique si n es un factor de los primos de 2 -> sqrt (n).
Hay 9592 primos por debajo de 100,000. Por lo tanto, verificar un número bajo 1E10 tomaría 9592 cheques.
En general, una buena aproximación de la cantidad de primos bajo un número x viene dada por la función PI (x). Se estima que PI (x) es x / (log (x-1)).
Entonces ahora tenemos un algoritmo que se ejecuta en tiempo O (sqrt (n) / logn).

Este es el algoritmo más simple para determinar si p es primo: pruebe si n divide p para todo n de 2 a piso (sqrt (p)).

Si bien este algoritmo es simple, no es muy rápido una vez que p comienza a crecer. Para obtener mejores algoritmos necesitarás aprender algo de teoría de números.

Para todos los números mayores que 7, verifique si el número es divisible por 2, 3, 5, 7. Si no, es un número primo. No hay necesidad de grandes bucles !!!.

Para números menores que 7, verifique con 2, 3, 5. En general, con números primos menores que el número.

El proceso más general es verificar la divisibilidad con cada número menor que la raíz cuadrada del número de prueba.