(es) El desfile de los primos
(eo) Primoparado
http://dx.doi.org/10.13140/RG.2.2.34092.90243
Descripción artística:
Los números primos desfilando al rededor del número uno.
Motivación:
Una lectura sobre la Esprial de Ullam y sus curiosidades.
Descripción técnica:
Es una espiral cuadrada de cien vueltas con los números primos resaltados. El numero uno se ha marcado con rojo.
Esta construcción se conoce como la Espiral de Ullam.
Código (CFDG):
# Copyright 2015 Eduardo Adam Navas López
# Este archivo es Software Libre liberado bajo la licencia GNU GPLv3 o su versión más reciente:
# http://www.gnu.org/licenses/gpl.html
#Para generar la imagen:
#$ cfdg -s 8000 ullam.cfdg ullam.png
startshape espiral
NUMREVOLUCIONES = 100
LIMITE = 2*NUMREVOLUCIONES
TAM = 1
esPrimo_aux(n, i, lim) =
if(i <= lim,
if(mod(n,i),
esPrimo_aux(n, i+1, lim),
0),
1)
esPrimo(numero) = esPrimo_aux(numero, 2, floor(sqrt(numero)))
#1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 ...
desplazamientoH1(av,i) =
if(mod(av,2)==0,
av/2-i,
-(av-1)/2+i
)
desplazamientoV1(av) =
if(mod(av,2)==0,
av/2,
-(av-1)/2
)
desplazamientoH2(av) =
if(mod(av,2)==0,
-av/2,
(av+1)/2
)
desplazamientoV2(av,i) =
if(mod(av,2)==0,
av/2-i,
-(av-1)/2+i
)
shape espiral {
loop avances = LIMITE [] {
despy = desplazamientoV1(avances)
loop i = avances [] {
despx = desplazamientoH1(avances,i)
SQUARE[x despx y despy s TAM b if(esPrimo(avances^2-(avances-(i+1))), 0, 1)]
}
despx = desplazamientoH2(avances)
loop i = avances [] {
despy = desplazamientoV2(avances,i)
SQUARE[x despx y despy s TAM b if(esPrimo(avances^2+i+1), 0, 1)]
}
}
SQUARE[x 0 y 0 b 1 h 0 sat 1] #El número uno en rojo
}
No hay comentarios:
Publicar un comentario