(es) El baile de los primos
(eo) Primobalo
http://dx.doi.org/10.13140/RG.2.2.34092.90243
Descripción artística:
Los números primos danzando junto con los números compuestos al rededor del número uno.
Motivación:
Una lectura sobre la Esprial de Sacks y sus curiosidades.
Descripción técnica:
Es una espiral polar de la forma , con , y , con , y medido en revoluciones. Para cada se dibujó un círculo de color negro si es primo y griz si es compuesto.
Esta construcción se conoce como la Espiral de Sacks.
Alineaciones libres de números primos:
- Semirrecta horizontal derecha: cuadrados perfectos.
- Línea inmediatamente inferior a la anterior: números de la forma , divisibles siempre por y .
- Semirrecta horizontal izquierda: números de la forma , divisibles siempre por y .
Curvas aparentemente densas en números primos:
- Una espiral que, en la ilustración, termina cerca de la parte inferior del disco: números de la forma , el polinomio descubierto por Euler.
- Otra espiral situada varios lugares por encima de la anterior: números de la forma .
- Línea inmediatamente superior a la semirrecta horizontal izquierda: números de la forma .
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 -b 0 -s 8000 sacks.cfdg sacks.png CF::Size = [s 202 202] startshape espiral NUMREVOLUCIONES = 100 LIMITE = NUMREVOLUCIONES*NUMREVOLUCIONES VUELTA = 360 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))) shape espiral { curva[] loop i = LIMITE [] { n = i+1 ang = VUELTA * sqrt(n) rad = sqrt(n) CIRCLE[x (rad * cos(ang)) y (rad * sin(ang)) b if(esPrimo(n), 0, 0.75)] } CIRCLE[x 0 y 0 b 1 h 0 sat 1 s 0.5] loop i = LIMITE [] { n = i+LIMITE ang = VUELTA * sqrt(n) rad = sqrt(n) CIRCLE[x (rad * cos(ang)) y (rad * sin(ang)) b if(esPrimo(n), 0, 0.75)] } } path curva{ MOVETO(0,0) loop i = LIMITE [] { n = i+1 ang = VUELTA * sqrt(n) rad = sqrt(n) LINETO((rad * cos(ang)), (rad * sin(ang)) ) } STROKE(0.05)[] #STROKE()[] }
No hay comentarios:
Publicar un comentario