(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