-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathEULAM.HTM
267 lines (267 loc) · 14.8 KB
/
EULAM.HTM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<!doctype html>
<html lang="es" prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#">
<head>
<meta charset="utf-8">
<meta name="Author" content="Dario Alejandro Alpern">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="keywords" content="ulam, espiral, numero, primo">
<meta name="description" content="Aplicación Web que muestra una representación gráfica de los números primos. Hecho por Dario Alpern.">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:title" content="Espiral de Ulam">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Alpertron">
<meta property="og:url" content="https://www.alpertron.com.ar/EULAM.HTM">
<meta property="og:image" content="https://www.alpertron.com.ar/eulam.png">
<meta property="og:image:width" content="817">
<meta property="og:image:height" content="431">
<meta property="og:image:alt" content="Captura de pantalla">
<meta property="og:locale" content="es_ES">
<meta property="og:locale:alternate" content="en_US">
<meta property="og:description" content="muestra una representación gráfica de los números primos.">
<meta property="article:published_time" content="2025-03-08">
<meta property="fb:app_id" content="1495228927625175">
<link rel="alternate" hreflang="es" href="https://www.alpertron.com.ar/EULAM.HTM">
<link rel="alternate" hreflang="en" href="https://www.alpertron.com.ar/ULAM.HTM">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<link rel="canonical" href="https://www.alpertron.com.ar/EULAM.HTM">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Q7PH40GPHC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-Q7PH40GPHC');
</script>
<title>Espiral de Ulam</title>
<style>
@media print {nav {display:none}}
@media screen {
nav {background-color:#000080; width:100%; margin:0px; text-align:center}
nav ul {padding:0; margin:0 auto; list-style:none; display:inline-block}
nav li {float:left; position:relative; display:block; margin-top:0px; margin-bottom:0px; margin-left:5px; margin-right:5px; background-color:#000080; color:#FFFFFF; cursor: pointer; text-align:left}
nav li[aria-expanded="true"] {background-color:#004000; color:#FFFFFF}
nav li ul {display:none; position:absolute}
nav li[aria-expanded="true"] ul.alignleft {display:block; height:auto}
nav li[aria-expanded="true"] ul.alignright {display:block; height:auto; right:0px; background-color:#004000}
nav li ul li {clear:both; white-space: nowrap; border:0px; background-color:#004000; width:100%; padding-top:1em; padding-bottom:0.5em}
nav a:link{color:#FFFFFF; text-decoration:none}
nav a:visited{color:#FFFFFF; text-decoration:none}
nav a:hover{background-color:#004000; color:#FFFFFF; text-decoration:none}
nav a:active{background-color:#004000; color:#FFFFFF; text-decoration:none}
nav li ul li a:link{background-color:#004000; color:#FFFFFF; display:block; width:100%}
nav li ul li a:visited{background-color:#004000;color:#FFFFFF; display:block; width:100%}
nav li ul li a:hover{background-color:#FFFFFF; color:#004000; display:block; width:100%}
nav li ul li a:active{background-color:#FFFFFF; color:#004000; display:block; width:100%}
nav::after {clear:both}
@media (max-width: 400px) {nav {font-size:0.7em}}
@media (min-width: 400px) {nav {font-size:1em}}
}
#skip a {padding:6px; position:absolute; top:-40px; left:0px; color:white; border-right:1px solid white; border-bottom:1px solid white; border-bottom-right-radius:8px; background:#BF1722; transition:top 1s ease-out; z-index:100}
#skip a:focus {position:absolute; left:0px; top:0px; outline-color:transparent; transition: top .1s ease-in}
.bread {padding:0px;list-style:none; display:inline-block}
.bread li {display:inline}
.bread li+li:before {content:"›"}
input[type=button], button {border-radius:5px}
fieldset {border-radius:10px}
body {font-family: Arial, sans-serif;margin:0; padding:0}
h1 {text-align:center}
input[type=button] {border-radius:5px}
button {border-radius:5px}
#canvas {margin-left:auto; margin-right:auto; display:block; width:100%;text-align:center;vertical-align:middle; max-width:2000px;touch-action:none}
#applet {border: 0px none;width:100%;border-radius:10px}
#bottom {border: 0px none;width:100%;min-height:4em;padding:5px}
.pad {padding:10px}
@media (min-height: 200px) {#canvas {height:100px}}
@media (min-height: 300px) {#canvas {height:200px}}
@media (min-height: 400px) {#canvas {height:300px}}
@media (min-height: 500px) {#canvas {height:400px}}
@media (min-height: 600px) {#canvas {height:500px}}
@media (min-height: 700px) {#canvas {height:600px}}
@media (min-height: 800px) {#canvas {height:700px}}
@media (min-height: 900px) {#canvas {height:800px}}
@media (min-height: 1000px) {#canvas {height:900px}}
@media (min-height: 1100px) {#canvas {height:1000px}}
@media (min-height: 1200px) {#canvas {height:1100px}}
@media (min-height: 1300px) {#canvas {height:1200px}}
#cannotShow, #stop, #animform {display:none}
@media (min-width: 600px) {
#info {display:inline}
#inputboxes {display:inline; float:right}
#left {float:left}
#right {float:right}
}
@media screen and (prefers-color-scheme: dark) {
body {color: #ddd; background-color: #121212}
.applet {background-color:#606060; color: #fff}
a {color: #a3d4a7}
a:link,a:active {color: #a3d4a7}
a:hover {color: #f5cba7}
a:visited {color: #d7bde2}
input, textarea {color: white; background-color: #3b3b3b}
button:disabled {color: #808080; background-color: #606060}
}
</style>
<noscript>
<style>
.applet {display:none}
</style>
</noscript>
</head>
<body>
<div id="skip"><a href="#main">Ir al contenido principal</a></div>
<nav aria-label="Navegación principal">
<a id="left" href="#espiralulam">Espiral de Ulam</a>
<ul role="menubar">
<li role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="0">Electrónica
<ul role="menu" class="alignleft popup">
<li role="menuitem"><a href="INTEL.HTM" title="Todos los microprocesadores de Intel desde el 4004 al Pentium">Microprocesadores Intel</a></li>
</ul>
</li>
<li role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="-1">Matemáticas
<ul role="menu" class="alignleft popup">
<li role="menuitem"><a href="CALDORAS.HTM" title="Aplicaciones web que implementan calculadoras">Calculadoras</a></li>
<li role="menuitem"><a href="TNUMEROS.HTM" title="Artículos y programas sobre teoría de números">Teoría de números</a></li>
<li role="menuitem"><a href="PROBLEMAS.HTM" title="Problemas matemáticos interesantes">Problemas</a></li>
</ul>
</li>
<li role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="-1">Programas
<ul role="menu" class="alignright popup">
<li role="menuitem"><a href="ENSAM386.HTM" title="Programas escritos en lenguaje ensamblador del 80386">Assembler 80386</a></li>
<li role="menuitem"><a href="PROGJAVA.HTM" title="Aplicaciones web con JavaScript y WebAssembly">Aplicaciones web</a></li>
<li role="menuitem"><a href="JUEGOS.HTM" title="Juegos en línea y para descargar">Juegos</a></li>
</ul>
</li>
<li class="alignright" role="menuitem" aria-haspopup="true" aria-expanded="false" tabindex="-1">Contacto
<ul role="menu" class="alignright popup">
<li role="menuitem"><a href="PERSONAL.HTM" title="Información personal">Personal</a></li>
<li role="menuitem"><a href="FORMULAR.HTM" title="Formulario para enviar comentarios">Comentarios</a></li>
<li role="menuitem"><a href="GBOOK.HTM" title="Viejo y nuevo libro de visitas">Libro de invitados</a></li>
<li role="menuitem"><a href="PRIVACIDAD.HTM" title="Política de privacidad">Privacidad</a></li>
<li role="menuitem"><a href="DONACIONES.HTM" title="Donaciones al autor de este sitio Web">Donaciones</a></li>
</ul>
</li>
</ul>
<ul class="atright"><li><a href="ULAM.HTM" hreflang="en" title="This Web page in English">ENG</a></li></ul>
</nav>
<main id="main"><article>
<noscript><p><strong>El gráfico interactivo no funciona con Javascript deshabilitado. Por favor revise la configuración de su navegador.</strong></p></noscript>
<div id="applet">
<canvas id="canvas" aria-label="Espiral de Ulam" role="img" tabindex="0"></canvas>
<div id="bottom">
<div id="inputboxes">
<input id="animate" type="button" value="Animar">
<input id="stop" type="button" value="Detener">
<input id="zoomin" type="button" value="Acercar">
<label for="center">Centrar espiral en</label>
<input type="number" value="1" min="1" id="center">
<br>
<input id="zoomout" type="button" value="Alejar">
<label for="start">Comenzar la espiral desde</label>
<input type="number" value="1" min="1" id="start">
</div>
<div id="info"></div>
</div>
</div>
<div id="animform">
<fieldset><legend>Parámetros de animación</legend>
<p><label for="xincr">Incremento de <var>x</var>:</label>
<input id="xincr" type="number" value="0" min="-10" max="10"></p>
<p><label for="yincr">Incremento de <var>y</var>:</label>
<input id="yincr" type="number" value="0" min="-10" max="10"></p>
<p><label for="sincr">Incremento de inicio:</label>
<input id="sincr" type="number" value="0" min="-10" max="10"></p>
<p><label for="delay">Demora en segundos:</label>
<input id="delay" type="number" value="1" min="0.1" max="10"></p>
<input id="doanimate" type="button" value="Animar">
<input id="cancelanim" type="button" value="Cancelar">
</fieldset>
</div>
<div class="pad">
<h1 id="espiralulam">Espiral de Ulam</h1>
<ol class="bread" vocab="https://schema.org/" typeof="BreadcrumbList">
<li property="itemListElement" typeof="ListItem">
<a property="item" typeof="WebPage" href="/"><span property="name">Alpertron</span></a>
<meta property="position" content="1">
</li>
<li property="itemListElement" typeof="ListItem">
<a property="item" typeof="WebPage" href="PROGJAVA.HTM"><span property="name">Aplicaciones web</span></a>
<meta property="position" content="2">
</li>
<li property="itemListElement" typeof="ListItem">
<span property="name">Espiral de Ulam</span>
<meta property="position" content="3">
</li>
</ol>
<p>¿Puede notar algún patrón en este gráfico? No lo creerá al principio pero está generado usando números primos.</p>
<p>Para poder hacerlo, los números se colocan en una espiral, como se muestra a continuación.</p>
<pre>
13 —— 12 —— 11 —— 10 25
| | |
14 03 —— 02 09 24
| | | | |
15 04 01 08 23
| | | |
16 05 —— 06 —— 07 22
| |
17 —— 18 —— 19 —— 20 —— 21
</pre>
<p>Luego se marcan los números primos. Note la abundancia de diagonales.</p>
<p>En el gráfico que aparece arriba usted puede ver la espiral con valores de <var>n</var> de hasta 10<sup>18</sup>. Los números primos están marcados en verde.</p>
<p>Mueva el gráfico arrastrando el ratón con la tecla izquierda presionada. Con el foco en la espiral, también se puede mover el gráfico mediante las flechas del teclado. Puede obtener más detalle o ver un área mayor presionando los botones Acercar o Alejar.</p>
<p>También puede ver la posición (<var>x</var>, <var>y</var>) en la espiral y el número <var>n</var> de cualquier punto del gráfico moviendo el cursor hasta ese punto.
El applet muestra las ecuaciones correspondientes a las líneas diagonales que se cruzan en el punto indicado por el cursor.</p>
<p>Mueva el centro escribiendo un nuevo número (de hasta 18 dígitos) en el casillero superior de entrada de datos.</p>
<p>Cambie el número que corresponde al centro de la espiral escribiendo un nuevo número (de hasta 18 dígitos) en el casillero inferior de entrada de datos.</p>
<p>La fórmula que genera los números en las líneas diagonales se puede expresar mediante polinomios de segundo grado. Los polinomios cuadráticos se muestran en la pantalla junto con su factorización si es posible.
En este caso la diagonal no puede contener primos, excepto en casos excepcionales (cuando un factor vale 1 y el otro es primo).</p>
<p>Cuando el polinomio cuadrático no se puede factorizar, su diagonal contendrá primos. Una característica de los polinomios de segundo grado es que alrededor de la mitad de los números primos no puede dividir a ninguno de los valores que toma el polinomio.
Como ejemplo, si elegimos el valor 41 en el centro de la espiral entrando este número en el casillero derecho, hallaremos una diagonal con muchos primos en la dirección noroeste-sureste.
Esto se debe a que los valores que toma el polinomio 4t<sup>2</sup> + 2t + 41 no puede dividir a 3, 5, 7, 11, 13, 17, 19, 23, 29, 31 ó 37 entre otros números primos.
Cualquier número en la línea diagonal menor que 41<sup>2</sup> = 1681 debe ser primo, ya que no es múltiplo de ningún primo menor que su raíz cuadrada.</p>
<p>Los números que se muestran a la derecha del polinomio son los primos menores que 100 que no pueden dividir a ninguno de los valores que toma el polinomio.
Las diagonales cuyos números no se pueden dividir por primos pequeños tienen mayor cantidad de números primos, porque la mayoría de los números compuestos son divisibles por primos pequeños.</p>
<h2>Código fuente</h2>
<p>Puede bajar el código fuente de esta aplicación y del viejo applet de visualización de la espiral de Ulam desde <a href="https://github.com/alpertron/calculators">GitHub</a>. El código fuente está escrito en lenguaje C, por lo que es necesario <a href="https://emscripten.org/docs/getting_started/downloads.html">Emscripten</a> para generar JavaScript.</p>
<p>Escrito por Dario Alpern. Actualizado el 8 de marzo de 2025.</p>
</div>
</article></main>
<div id="cannotShow"><p>No se puede mostrar la espiral cuando el valor del centro es menor que el valor inicial.</p></div>
<script type="text/wasmb64" id="wasmb64">
</script>
<script>
<!--
//-->
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"browserRequirements": "Requires HTML5. Requires Javascript.",
"name": "Espiral de Ulam",
"description": "Aplicación Web que muestra una representación gráfica de los números primos.",
"image": ["https://www.alpertron.com.ar/eulam.png"],
"datePublished": "2025-03-08",
"dateModified": "2025-03-08",
"operatingSystem": "Any",
"applicationCategory": "EducationalApplication",
"author": {
"@type": "Person",
"name": "Dario Alpern"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.1",
"ratingCount": "18"
},
"inLanguage": "es",
"license": "https://www.gnu.org/licenses/gpl-3.0.en.html",
"isAccessibleForFree": true,
"offers": {
"@type": "Offer",
"availability": "https://schema.org/OnlineOnly",
"price": "0",
"priceCurrency": "USD"
}
}
</script>
</body>
</html>