jueves, 17 de diciembre de 2020

Números Primos y Divisores con fórmulas desbordadas

Los que me han leído alguna vez conocen de mi afición por las matemáticas... mi hija, igualmente, me 'sufre' bastante a menudo con este tema :D
Bien, pues hace un par de días, mi hija, estudia cuarto de primaria, me pidió ayuda para entender el tema de los divisores y los números primos.. obviamente con gusto se lo expliqué ;-)
Pero me hizo recordar que hace algún tiempo publiqué un par de artículos sobre estos temas:
aquí
y aquí
aunque en esos artículos empleaba algo de programación...

Por suerte para todos han llegado a nosotros las fórmulas desbordadas (de momento en Microsoft 365) que hasta cierto punto son capaces de replicar bucles de programación, pero sin picar códigos incomprensibles ;-)
Y aquí estamos... en el post de hoy listaremos los números primos existentes entre los 1.000 primeros números naturales, así como los divisores para cada valor de esos 1.000 números.
Números Primos y Divisores con fórmulas desbordadas
Recordemos los conceptos de divisor y número primo.
Los divisores de un número natural son los números naturales que lo pueden dividir, resultando de cociente otro número natural y de resto 0.
Por otra parte, un número primo es un número natural mayor que 1 que tiene únicamente dos divisores positivos distintos: él mismo y la unidad.
Por el contrario, los números compuestos son los números naturales que tienen algún divisor natural aparte de sí mismos y de la unidad, y por lo tanto pueden factorizarse.

Vamos con los cálculos...
Primero listaremos los 1000 primeros valores... así en la celda B2 insertamos: =SECUENCIA(1000;;2;1)
es decir, un vector de números naturales desde el 2 hasta el 1001 incrementados de 1 en 1. Dejo fuera la unidad (1).
Recuerda que en este caso la función se desbordará automáticamente hacia abajo.

En un segundo paso listaré para cada valor anterior sus divisores.
Así en la celda D2 escribiremos:
=TRANSPONER(LET(lista;SECUENCIA($B2);
resto;RESIDUO($B2;lista);
FILTRAR(lista;resto=0)))

luego la arrastraremos hasta la última fila con valores...
He empleado la función LET para facilitar la comprensión del cálculo...
Primero generamos un listado 'lista', con la función SECUENCIA, que iría desde el 1 hasta el valor de la columna B.
Esto es, 1,2 ó 1,2,3 ó 1,2,3,4 etcétera.
A continuación obtenemos el resto del cociente entre el valor de la columna B y cada uno de los elementos de la lista previa:
RESIDUO($B2;lista)
Finalmente, sobre los listados anteriores, aplicando la función FILTRAR nos quedamos solo con aquellos números cuyo resto sea cero (o sea, la definición de divisor):
FILTRAR(lista;resto=0)
El listado de esos divisores, para cada natural de la columna B, lo recuperamos horizontalmente mediante la función TRANSPONER.
Números Primos y Divisores con fórmulas desbordadas

Por acabar el artículo de hoy, en la celda C2 añadiremos una fórmula que identifique si un número es primo o compuesto.
El algoritmo que aplico es simple... ya que un número primo solo tiene dos divisores (a sí mismo y a la unidad), un número es primo si la suma de todos sus divisores coincide con la suma de 1 más su valor.
Por tanto en C2 y luego arrastrando hasta la última celda:
=SI(SUMA(LET(lista;SECUENCIA($B2);
resto;RESIDUO($B2;lista);
FILTRAR(lista;resto=0)))=B2+1;"primo";"compuesto")

Números Primos y Divisores con fórmulas desbordadas


Sencillo y fácil ;-)

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.