FÓRMULAS DE EXCEL

Calcular números primos en Excel

Calcular números primos en Excel

Funciones utilizadas: SUMA, MULTIPLO.INFERIOR, FILA, INDIRECTO, ENTERO, RAIZ, SI, ES.PAR, REDONDEAR.MAS, ESNUMERO, COINCIDIR

Planteamos 4 fórmulas para calcular si el valor numérico de una celda se refiere a un número primo o no. Cada fórmula tiene un valor numérico máximo como límite para calcular dentro de la celda y devolverá VERDADERO en caso de que el resultado sea un número primo, y FALSO en caso de que sea un número no primo. Por ser fórmulas matriciales, debemos aceptar cada fórmula pulsando CTRL+SHIFT+ENTER.

IMPORTANTE: Hay que remarcar que para el cálculo del valor «1» todas las fórmulas presentes en este artículo devolverán VERDADERO, cuando en realidad deberían devolver FALSO dado que el «1» no es un número primo.

 

FÓRMULA «A»

Suponiendo que necesitamos calcular si la celda A2 contiene o no un número primo, nos posicionamos en otra celda y escribimos la siguiente sintaxis:

{=SUMA(--(MULTIPLO.INFERIOR(A2;FILA(INDIRECTO("1:"&ENTERO(RAIZ(A2)))))=A2))=1}

Donde A2 corresponde a la celda objetivo para analizar.

Esta fórmula crear una matriz del 1 hasta la raiz cuadrada del valor en A2, y aplica la función MULTIPLO.INFERIOR a cada elemento resultante. De esta forma, y convirtiendo los VERDADERO y FALSO a 0 y 1 por el doble operador «–«, se suman dichos valores para comprobar si la suma es o no 1, y devolver VERDADERO en caso de ser un número primo.

El valor máximo posible de cálculo para esta fórmula es 1.099.513.724.928.

 

FÓRMULA «B»

Suponiendo que necesitamos calcular si la celda A2 contiene o no un número primo, nos posicionamos en otra celda y escribimos la siguiente sintaxis:

{=SI(ES.PAR(A2);FALSO;SUMA(--(MULTIPLO.INFERIOR(A2;FILA(INDIRECTO("1:"&ENTERO(REDONDEAR.MAS(RAIZ(A2);0)/2)+1))*2-1)=A2))=1)}

Donde A2 corresponde a la celda objetivo para analizar.

Esta fórmula evita procesar los números pares con lo cual se duplica la capacidad de la matriz y la velocidad de cálculo. Esto se puede lograr debido a que en la fórmula anterior todos los elementos que contienen un número par (excepto el 2) resultan innecesarios dado que cualquier número par mayor a 2 es divisible por 2 y por ende es imposible que sea primo.

El valor máximo posible de cálculo para esta fórmula es 4.398.042.316.801 y tiene un error para el cálculo de los números «2» y «3», donde devolverán FALSO cuando en realidad deberían devolver VERDADERO por ser números primos.

 

FÓRMULA «C»

Suponiendo que necesitamos calcular si la celda A2 contiene o no un número primo, nos posicionamos en otra celda y escribimos la siguiente sintaxis:

{=SI(ESNUMERO(COINCIDIR(A2;{2;3;5;7};0));VERDADERO;SI(SUMA(--(A2-ENTERO(A2/{2;3;5;7})*{2;3;5;7}=0))>0;FALSO;SUMA(--(MULTIPLO.INFERIOR(A2;{19}+(FILA(INDIRECTO("1:"&REDONDEAR.MAS(RAIZ(A2)/10;0)))-1)*10)=A2))=1))}

Donde A2 corresponde a la celda objetivo para analizar.

Esta fórmula plantea la posibilidad de evitar procesar los números terminados en 5, ya que todos los números terminados en 5 son siempre divisibles por 5. Esto se puede lograr dado que la fórmula trabaja con una matriz de cuatro columnas en lugar de una, donde cada una analiza cada posible terminación (1, 3, 7 y 9).

El valor máximo posible de cálculo para esta fórmula es 109.951.162.777.600.

 

FÓRMULA «D»

Suponiendo que necesitamos calcular si la celda A2 contiene o no un número primo, nos posicionamos en otra celda y escribimos la siguiente sintaxis:

{=SI(ESNUMERO(COINCIDIR(A2;{2;3;5;7;11;13;17;19;23;29;31;37;41;43;47;53;59;61;67;71;73;79;83;89;97};0));VERDADERO;SI(SUMA(--(A2-ENTERO(A2/{2;3;5;7;11;13;17;19;23;29;31;37;41;43;47;53;59;61;67;71;73;79;83;89;97})*{2;3;5;7;11;13;17;19;23;29;31;37;41;43;47;53;59;61;67;71;73;79;83;89;97}=0))>0;FALSO;SUMA(--(MULTIPLO.INFERIOR(A2;{19 999!#'9)+/913799;?98183878991939799}+(FILA(INDIRECTO("1:"&REDONDEAR.MAS(RAIZ(A2)/100;0)))-1)*100)=A2))=1))}

Donde A2 corresponde a la celda objetivo para analizar.

Esta fórmula amplia la cantidad de columnas de matriz a 40 columnas, lo que permite llegar a calcular el número más alto que permite el límite de precisión numérica de Excel de 15 caracteres. Dicha fórmula es la recomendada si nuestro rango a evaluar puede contener un número muy elevado de hasta 15 caracteres.

El valor máximo posible de cálculo para esta fórmula es 10.995.116.277.760.000.

 

Dependiendo del número máximo que podamos tener en nuestro rango, deberemos aplicar la fórmula que más se ajuste a dicho valor máximo para evitar demoras en los cálculos.

 

Te recomiendo ver el siguiente link con más videos de Fórmulas ingeniosas de Excel AQUÍ.

Salvo aclaración, todas las fórmulas y macros de este sitio están configuradas para aplicarse sobre la celda A1. Algunas fórmulas se encuentran encerradas entre llaves {} debido a que son fórmulas matriciales. Estas llaves no deben introducirse tecleándolas, sino que se generan automáticamente al aceptar la fórmula pulsando Control+Shift+Enter al mismo tiempo. Las fórmulas de este sitio son compatibles con versiones de Microsoft Excel® 2010 o superiores.