Tabla de Factores Primos y Divisores

Creación de un cuadernillo con una tabla de factores primos y divisores de los números del 1 al 360. Usamos el lenguaje de programación Logo (Intérprete FMSLogo)

Contenido

Este es otro ejemplo de uso de un lenguaje de programación para producir automáticamente una tabla de referencia útil.

1. Factores Primos

En la escuela se nos enseña cómo encontrar los factores primos de un número. Ese procedimiento puede expresarse en un lenguaje formal (lenguaje de programación Logo) de la siguiente manera:

para factores :num [:encontrado busca.factor :num]
si :encontrado = :num [devuelve ponprimero :encontrado []]
devuelve ponprimero :encontrado factores :num / :encontrado
fin

para busca.factor :num [:posible.factor 2]
si :num = 1 [devuelve 1]
si :num = :posible.factor [devuelve :num]
si 0 = resto :num :posible.factor [devuelve :posible.factor]
devuelve (busca.factor :num :posible.factor + 1)
fin

Bastantes menos palabras que las que utilizaríamos en lenguaje natural para explicar el procedimiento, y bastante más precisas, ya que podemos utilizar esta descripción formal y verificar si funciona:

muestra factores 12
[2 2 3]

muestra factores 360
[2 2 2 3 3 5]

muestra factores 2
[2]

muestra factores 1
[1]

muestra factores 329
[7 47]

2. Divisores

De la misma manera, podemos definir una procedimiento llamado divisores que nos devuelva los divisores de un número dado. Este procedimiento es aún más sencillo:

para divisores :num [:posible.divisor 1]
si :posible.divisor > :num [devuelve []]
devuelve frase ~
 sisino 0 = resto :num :posible.divisor [:posible.divisor] [[]] ~
 (divisores :num :posible.divisor + 1)
fin
muestra divisores 12
[1 2 3 4 6 12]

muestra divisores 30
[1 2 3 5 6 10 15 30]

muestra divisores 43
[1 43]

muestra divisores 360
[1 2 3 4 5 6 8 9 10 12 15 18 20 24 30 36 40 45 60 72 90 120 180 360]

3. Creación de Tabla

Usando estas definiciones podemos calcular los factores primos y los divisores para una secuencia de números enteros. Para crear la secuencia usamos SecEnt. Y para trabajar con cada número de la secuencia utilizamos ParaCada:

paracada secent 1 20 [(escribe [Factores de] ? [:] factores ?)]
Factores de 1 : 1
Factores de 2 : 2
Factores de 3 : 3
Factores de 4 : 2 2
Factores de 5 : 5
Factores de 6 : 2 3
Factores de 7 : 7
Factores de 8 : 2 2 2
Factores de 9 : 3 3
Factores de 10 : 2 5
Factores de 11 : 11
Factores de 12 : 2 2 3
Factores de 13 : 13
Factores de 14 : 2 7
Factores de 15 : 3 5
Factores de 16 : 2 2 2 2
Factores de 17 : 17
Factores de 18 : 2 3 3
Factores de 19 : 19
Factores de 20 : 2 2 5
paracada secent 1 20 [(escribe [Divisores de] ? [:] divisores ?)]
Divisores de 1 : 1
Divisores de 2 : 1 2
Divisores de 3 : 1 3
Divisores de 4 : 1 2 4
Divisores de 5 : 1 5
Divisores de 6 : 1 2 3 6
Divisores de 7 : 1 7
Divisores de 8 : 1 2 4 8
Divisores de 9 : 1 3 9
Divisores de 10 : 1 2 5 10
Divisores de 11 : 1 11
Divisores de 12 : 1 2 3 4 6 12
Divisores de 13 : 1 13
Divisores de 14 : 1 2 7 14
Divisores de 15 : 1 3 5 15
Divisores de 16 : 1 2 4 8 16
Divisores de 17 : 1 17
Divisores de 18 : 1 2 3 6 9 18
Divisores de 19 : 1 19
Divisores de 20 : 1 2 4 5 10 20

Con sólo un poco más de esfuerzo, podemos modificar esta instrucción para que produzca una tabla con un formato para impresión.

4. Resultado

Cuando utilizamos la herramienta groff para procesar este formato obtenemos un cuardernillo con una tabla de factores primos y divisores [Documento en PDF] lista para imprimir en formato PDF para un tamaño de hoja A4:

Imagen: factores primos divisores


5. Procedimientos

Los procedimientos utilizados fueron:

para pal! :lista
devuelve reduce [(palabra ?1 unespacio ?2)] :lista
fin

paracada secent 1 360 [escribe (palabra ? tab pal! factores ? tab pal! divisores ?)]

Al ejecutar la instrucción ParaCada anterior se genera el contenido de la tabla con formato. El archivo Tabla.txt que recibe groff tiene como cabecera:

.pl +2
.ss 20
.po 0.8i
.nr PS 10
.nr VS 13
.nr FL 6.5i
.nr LL 6.5i
.nr HM 0.7i
.nr FM 0.5i
.CD
.LG
.LG
Tabla de Factores Primos y Divisores\*{\[dg]\*}
.DE
.FS \*{\[dg]\*}
Producida con el lenguaje de programación
.B Logo
y
.B groff.

Esta tabla pueden ser usada para cualquier propósito y distribuida sin restricciones.
.FE
.1C
.TS H
allbox expand;
CB | LB | LB
Rw(3ems) | L | Lw(4i).
N\[de]        Factores        Divisores
_
.TH

Y tiene como parte final la instrucción en groff que cierra la tabla:

.TE

La instrucción para generar el archivo en PostScript es:

groff -fN -t -Tps -m ms Tabla.txt | psbook | psnup -2 -pa4 > FactoresPrimosDivisores.ps

6. Tabla de Factores Primos ampliada

Este documento de 10 páginas contiene una tabla que contiene los factores primos de todos los números desde el 2 hasta el 4999. Fue creado con procedimientos y herramientas similares. Las veces que un factor primo ser repite están marcadas como exponentes de dicho factor. Cada fila cotiene 10 números. Los números primos están marcados en negrilla [Documento en PDF].

Imagen: tabla factores primos


7. Preguntas, Dudas, Comentarios, Peticiones

Nombre:
Ciudad y País:
Email:
 

8. Enlaces

Página Principal

Criba de Eratóstenes

Creación de Tablas de Multiplicación para Imprimir

Ejercicios de las Operaciones Básicas para Imprimir


Generado con PureJoy.
Fecha: 17:04 - Apr 08, 2013