Este es el más básico (y lamentablemente tambien el menos eficiente) de los tests de primalidad, ver si es divisible por todos los números anteriores mayores a 1 y menores a si mismo.
Sin embargo, se le pueden cambiar algunas cosas:
1) No hace falta que pruebes divisibilidad por todos los números entre [2;n-1], podés limitar la prueba a [2;sqrt(n)] siendo sqrt() raiz cuadrada.
2) Se pueden guardar todos los números primos que se van encontrando y probando la divisibilidad contra estos primos, en vez de probar todos los números. Ya que si un número es divisible por "15" singifica que también va a ser divisible por 3 y por 5, ambos primos.
3) Si no se quiere implementar lo dicho en el punto "2)" Se puede hacer antes de someterlo al loop for, un test de divisbilidad por los primos más básicos, es decir, 2, 3, 5, 7, 11 y 13 o quizas algunos más, de esta manera, se ahorran algunos ciclos del procesador eliminando los numeros pares, los que terminan en "5", etc.
Sin embargo, se le pueden cambiar algunas cosas:
1) No hace falta que pruebes divisibilidad por todos los números entre [2;n-1], podés limitar la prueba a [2;sqrt(n)] siendo sqrt() raiz cuadrada.
2) Se pueden guardar todos los números primos que se van encontrando y probando la divisibilidad contra estos primos, en vez de probar todos los números. Ya que si un número es divisible por "15" singifica que también va a ser divisible por 3 y por 5, ambos primos.
3) Si no se quiere implementar lo dicho en el punto "2)" Se puede hacer antes de someterlo al loop for, un test de divisbilidad por los primos más básicos, es decir, 2, 3, 5, 7, 11 y 13 o quizas algunos más, de esta manera, se ahorran algunos ciclos del procesador eliminando los numeros pares, los que terminan en "5", etc.