-
Notifications
You must be signed in to change notification settings - Fork 39
/
GAUSIANO.HTM
449 lines (447 loc) · 28.7 KB
/
GAUSIANO.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
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
<!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="description" content="Aplicación Web que factoriza enteros gaussianos de la forma (a+b*i). Escrito por Darío Alpern">
<meta name="theme-color" content="#db5945">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:title" content="Factorización de enteros gaussianos">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Alpertron">
<meta property="og:url" content="https://www.alpertron.com.ar/GAUSIANO.HTM">
<meta property="og:image" content="https://www.alpertron.com.ar/gausiano.png">
<meta property="og:image:width" content="894">
<meta property="og:image:height" content="470">
<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="Factoriza números enteros gaussianos de la forma (a+b*i).">
<meta property="article:published_time" content="2024-11-04">
<meta property="fb:app_id" content="1495228927625175">
<link rel="alternate" hreflang="es" href="https://www.alpertron.com.ar/GAUSIANO.HTM">
<link rel="alternate" hreflang="en" href="https://www.alpertron.com.ar/GAUSSIAN.HTM">
<link rel="manifest" href="gausiano.webmanifest">
<link rel="apple-touch-icon" href="gaussian-icon-180px.png">
<link rel="canonical" href="https://www.alpertron.com.ar/GAUSIANO.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>Factorización de enteros gaussianos</title>
<style>
@media print {nav, #footer {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}
.atright {float:right;}
@media (max-width: 400px) {nav {font-size:0.7em}}
@media (min-width: 400px) {nav {font-size:1em}}
}
input[type=text], input[type=email], input[type=number] {min-height:2em; border-radius:10px}
#sending, #sentOK, #notSent {display:none}
.center {text-align:center}
#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:"›"}
.modal-header {padding: 2px 10px; background-color: #5cb85c; color: white;}
.modal-body {padding: 2px 10px;}
.modal-content {
position: relative;
background-color: #fefefe;
margin: auto;
padding: 0;
border: 1px solid #888;
width: 80%;
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
animation-name: animatetop;
animation-duration: 0.4s
}
.modal {
display: none;
position: fixed;
z-index: 1;
padding-top: 100px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.new {color: #0000FF; font-weight:bold}
body {font-family: Arial, sans-serif;margin: 0; padding: 0;}
h1, .h2title {text-align:center}
input[type=button], button {border-radius:5px}
#actions button {color: white; background-color: #3b3b3b; min-height:100%; border-radius:10px}
#actbtn {display:flex; flex-flow:row wrap; justify-content:space-around; min-height:3em}
#funcbtns {display:flex; justify-content:space-around; flex-flow:row wrap; margin-top:3px; margin-bottom:3px}
#funcbtns button {min-height:2.5em; min-width:2.5em; margin:3px}
fieldset {border-radius:10px}
#inputs {grid-column:1/3; grid-row:1}
#actions {grid-column:1; grid-row:2}
#functions {grid-column:2/3; grid-row:2}
.hex {font-family: Courier, "Lucida Console", monospace}
.lf,.labels {padding:0.2em; clear:both}
.blue {color: #0000FF}
.inline {display:inline}
.pad {padding:10px}
.applet {margin-left: auto;margin-right: auto; border: 0px none;width:90%;text-align:center;background-color:#c0c0c0;padding:10px;border-radius:10px; display:grid}
.funcbtn {margin:3px}
#feedback {display:none}
.inputfbck{width: calc(100% - 10em);float:right;padding:3px;margin:0px;}
@media (min-width: 400px) {.input{width: calc(100% - 6em);float:right;padding:3px;margin:0px;}}
@media (max-width: 400px) {.input{width:100%;padding:3px;margin:0px;}}
@media (min-width: 500px) {#formleft {float:left;width:50%;} #formright {float:right;width:50%;}}
#help,#result,#status,#footer {margin: 3px; padding: 3px;}
#more,#stop {display:none}
@media (max-width: 53em) {
#actions {grid-column:1/3; grid-row:1}
#inputs {grid-column:1/3; grid-row:2}
#functions {grid-column:1/3; grid-row:3}
}
@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}
.blue {color: #E0E000}
.new {color: #E0E000}
}
</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">
<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="GAUSSIAN.HTM" hreflang="en" title="This Web page in English">ENG</a></li></ul>
</nav>
<main id="main">
<article>
<h1>Factorización de enteros gaussianos</h1>
<div class="pad">
<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">Factorización de enteros gaussianos</span>
<meta property="position" content="3">
</li>
</ol>
</div>
<noscript><p><strong>La calculadora no funciona con Javascript deshabilitado. Por favor revise la configuración de su navegador.</strong></p></noscript>
<div class="applet">
<div id="inputs">
<label for="value">Valor</label><input type="text" inputmode="numeric" id="value" value="" class="input">
</div>
<fieldset id="actions"><legend>Acciones</legend>
<div id="actbtn">
<button type="button" id="more" title="Cambiar número de curva o ingresar factor">Más</button>
<button type="button" id="eval" title="Evaluar la expresión pero no factorizar">Sólo<br>evaluar</button>
<button type="button" id="factor" title="Factorizar la expresión">Factorizar</button>
<button type="button" id="stop" title="Detener el cálculo">Parar</button>
<button type="button" id="helpbtn" title="Mostrar el uso de la aplicación y la teoría matemática utilizada">Ayuda</button>
<button type="button" id="config" title="Cambiar los parámetros de uso de la aplicación">Config</button>
<button type="button" id="clrinput" title="Limpiar la caja de entrada">Borrar<br>entrada</button>
</div>
</fieldset>
<fieldset id="functions"><legend>Funciones</legend>
<label for="funccat">Categorías:</label>
<select id="funccat">
<optgroup label="Funciones u operadores">
<option value="0" selected>Matemática básica</option>
<option value="1">Divisibilidad</option>
<option value="2">Matemática recreativa</option>
<option value="3">Teoría de números</option>
<option value="4">Otros</option>
</optgroup>
</select>
<div id="funcbtns">
<button type="button">(</button><button type="button">)</button><button type="button">i</button><button type="button">+</button><button type="button">-</button><button type="button">*</button><button type="button">/</button><button type="button">%</button><button type="button">^</button><button type="button">ans</button><button type="button">Re(</button><button type="button">Im(</button><button type="button">Norm(</button><button type="button">Random(</button>
</div>
</fieldset>
</div>
<div id="help" aria-live="polite">
<p>Esta aplicación Web factoriza enteros gaussianos como un producto de primos gaussianos.</p>
<p>Los enteros gaussianos son números complejos que tienen la forma <var>a</var> + <var>b</var>i, donde <var>a</var> y <var>b</var> son números enteros en la recta real.</p>
<p>La factorización es única, si no consideramos el orden de los factores y los primos asociados. Estos conjuntos de primos asociados se obtienen multiplicando un primo por una potencia de i (por eso cada número primo tiene tres asociados). Para eliminar este problema, tomamos el primo tal que <var>a</var> >= |<var>b</var>|.</p>
<h2>Cómo factorizar enteros gaussianos</h2>
<p>Un concepto importante necesario para la factorización de enteros gaussianos es la norma. Ésta se define como: <span role="math" aria-label="norma de a más b i es igual a a al cuadrado más b al cuadrado">N(<var>a</var>+<var>b</var>i) = <var>a</var><sup>2</sup> + <var>b</var><sup>2</sup></span>.</p>
<p>El producto de la norma de dos enteros gaussianos es igual a la norma del producto de estos números como se muestra a continuación:</p>
<p>N(<var>a</var>+<var>b</var>i) N(<var>c</var>+<var>d</var>i) =
(<var>a</var><sup>2</sup> + <var>b</var><sup>2</sup>) (<var>c</var><sup>2</sup> + <var>d</var><sup>2</sup>) =
(<var>a</var><var>c</var>)<sup>2</sup> + (<var>b</var><var>d</var>)<sup>2</sup> + (<var>a</var><var>d</var>)<sup>2</sup> + (<var>b</var><var>c</var>)<sup>2</sup> =
(<var>a</var><var>c</var>)<sup>2</sup> - 2<var>a</var><var>b</var><var>c</var><var>d</var> + (<var>b</var><var>d</var>)<sup>2</sup> + (<var>a</var><var>d</var>)<sup>2</sup> + 2<var>a</var><var>b</var><var>c</var><var>d</var> + (<var>b</var><var>c</var>)<sup>2</sup> =
(<var>a</var><var>c</var>-<var>b</var><var>d</var>)<sup>2</sup> + (<var>a</var><var>d</var>+<var>b</var><var>c</var>)<sup>2</sup> =
N((<var>a</var><var>c</var>-<var>b</var><var>d</var>)+(<var>a</var><var>d</var>+<var>b</var><var>c</var>)i) =
N(<var>a</var>(<var>c</var>+<var>d</var>i) + <var>b</var>(-<var>d</var>+<var>c</var>i)) =
N(<var>a</var>(<var>c</var>+<var>d</var>i) + <var>b</var>i(<var>c</var>+<var>d</var>i)) =
N((<var>a</var>+<var>b</var>i) (<var>c</var>+<var>d</var>i))</p>
<p>En la penúltima expresión nos valemos de la propiedad i<sup>2</sup> = -1.</p>
<p>Esto significa que como primer paso para factorizar números gaussianos, debemos hallar los factores primos de su norma, así obtenemos las normas de los factores del número original.</p>
<p>El segundo paso consiste en obtener los factores a partir de las normas halladas.</p>
<p>Existen tres casos:</p>
<ol>
<li>El factor primo <var>p</var> de la norma es 2: en este caso los factores primos del entero gaussiano pueden ser 1+i o 1-i (hay que probar cuál divide al número).</li>
<li>El factor primo <var>p</var> de la norma es múltiplo de 4 más 3: este valor no se puede expresar como suma de dos cuadrados, así que <var>p</var> no es una norma, pero <var>p</var><sup>2</sup> sí lo es.
Como <var>p</var><sup>2</sup> = <var>p</var><sup>2</sup> + 0<sup>2</sup>, y no existe una norma prima que divida <var>p</var><sup>2</sup>, el número <var>p</var> + 0i es un primo gaussiano, y deberemos descartar el factor repetido <var>p</var>.</li>
<li>El factor primo <var>p</var> de la norma es múltiplo de 4 más 1: este número se puede expresar como suma de dos cuadrados utilizando los métodos explicados en la página de <a href="https://www.alpertron.com.ar/4CUADR.HTM">suma de cuadrados</a>.
Si <var>p</var> = <var>m</var><sup>2</sup> + <var>n</var><sup>2</sup>, entonces deberemos verificar si <var>m</var> + <var>n</var>i o <var>m</var> − <var>n</var>i son divisores del número gaussiano original.</li>
</ol>
<p>¿Por qué un número que es múltiplo de 4 más 3 no puede expresarse como suma de cuadrados? Esto se debe a que el cuadrado de un número par es múltiplo de 4 y el cuadrado de un número impar es múltiplo de 4 más 1. De esta manera obtenemos:</p>
<ul>
<li>par<sup>2</sup> + par<sup>2</sup> = múltiplo de 4</li>
<li>par<sup>2</sup> + impar<sup>2</sup> = múltiplo de 4 más 1</li>
<li>impar<sup>2</sup> + par<sup>2</sup> = múltiplo de 4 más 1</li>
<li>impar<sup>2</sup> + impar<sup>2</sup> = múltiplo de 4 más 2</li>
</ul>
<p>Así que bajo ninguna circunstancia una suma de dos cuadrados puede ser múltiplo de 4 más 3.</p>
<p>Por supuesto el primer paso es mucho más complicado que el segundo. Esto es porque no conocemos métodos eficientes de factorización de números enteros.</p>
<p>Ejemplo: factorizar el entero gaussiano 440 − 55i</p>
<p>La norma es 440<sup>2</sup> + 55<sup>2</sup> = 196625 = 5 × 5 × 5 × 11 × 11 × 13</p>
<p>Tanto 5 como 13 son múltiplos de 4 más 1 mientras que 11 es múltiplo de 4 más 3. Podemos valernos de 5 = 2<sup>2</sup> + 1<sup>2</sup> y 13 = 3<sup>2</sup> + 2<sup>2</sup></p>
<p>Como 11 es un primo gaussiano, podemos dividir el número original por 11 y hallamos el cociente 40 − 5i.</p>
<p>Para los tres factores de la norma iguales a 5, deberemos dividir el resultado del paso anterior 40 − 5i por 2 − i o por 2 + i. Obtenemos: 40 − 5i = (2 + i)<sup>2</sup> × (2 − i) × (3 − 2i)</p>
<p>Para el factor 13 deberemos dividir el resultado del paso anterior 3 − 2i por 3 + 2i o por 3 − 2i. Por supuesto solo 3 − 2i divide a 3 − 2i.</p>
<p>La factorización completa es: 440 − 55i = 11 × (2 + i)<sup>2</sup> × (2 − i) × (3 − 2i).</p>
<h2>Expresiones</h2>
<p>Para ingresar la parte imaginaria de un entero gaussiano podrá utilizar el símbolo i, como por ejemplo en 3+4i.</p>
<p>Además puede entrar expresiones que usen los siguientes operadores, funciones y paréntesis:</p>
<ul>
<li> + para suma.</li>
<li> - para resta.</li>
<li> * para multiplicación.</li>
<li> / para división entera.</li>
<li> % para módulo (resto de la división).</li>
<li> ^ para exponenciación (el exponente debe ser real y mayor o igual que cero).</li>
<li> <strong>Ans</strong>: obtiene la última respuesta.</li>
<li> <strong>n!</strong>: factorial (<var>n</var> debe ser real y mayor o igual que cero).</li>
<li> <strong>n!! ... !</strong>: factorial múltiple (<var>n</var> debe ser real y mayor o igual que cero). Es el producto de <var>n</var> por <var>n</var> − <var>k</var> por <var>n</var> − <var>2k</var> ... (todos los números son mayores que cero) donde <var>k</var> es la cantidad de signos de exclamación. Ejemplo: 7!! = 7 × 5 × 3 × 1 = 105.</li>
<li> <strong>p#</strong>: primorial (producto de todos los primos menores o iguales que <var>p</var>).</li>
<li> <strong>F(n)</strong>: número de Fibonacci F<sub>n</sub>.</li>
<li> <strong>L(n)</strong>: número de Lucas L<sub>n</sub> = F<sub>n-1</sub> + F<sub>n+1</sub>.</li>
<li> <strong>P(n)</strong>: particiones irrestrictas (cantidad de descomposiciones de <var>n</var> en sumas de numeros enteros sin tener en cuenta el orden).</li>
<li> <strong>Re(n)</strong>: parte real de <var>n</var>.</li>
<li> <strong>Im(n)</strong>: parte imaginaria de <var>n</var>.</li>
<li> <strong>Norm(n)</strong>: norma de <var>n</var>, equivale a Re(n)<sup>2</sup> + Im(n)<sup>2</sup>.</li>
<li> <strong>Gcd(m,n, ...)</strong>: máximo común divisor de estos números enteros gausianos. Ejemplo: GCD(1+i, 2) = 1+i.</li>
<li> <strong>Lcm(m,n, ...)</strong>: mínimo común múltiplo de estos números enteros gausianos. Ejemplo: LCM(1+i, 2, 4) = 4.</li>
<li> <strong>Modinv(m,n)</strong>: inverso del valor <var>m</var> módulo <var>n</var>, sólo válido si gcd(m,n)=1.</li>
<li> <strong>Modpow(m,n,r)</strong>: calcula <var>m</var><sup><var>n</var></sup> módulo <var>r</var> (<var>n</var> debe ser real).</li>
<li> <strong>Random(m,n)</strong>: número gausiano aleatorio cuyos valores real e imaginario se encuentra entre los valores real e imaginario de <var>m</var> y <var>n</var> respectivamente.</li>
<li> <strong>isPrime(n)</strong>: Verifica si el entero gausiano es primo probable. En este caso retorna −1, en caso contrario, cero.</li>
</ul>
<p>Puedes usar el prefijo <em>0x</em> para números hexadecimales, por ejemplo 0x38 es igual a 56.</p>
<div class="noand">
<h2>Configuración</h2>
<p>Puedes cambiar la configuración de esta aplicación apretando el botón <strong>Config</strong> mientras el programa no está factorizando. En ese momento aparecerá una nueva ventana donde puedes seleccionar los siguientes ajustes:</p>
<ul>
<li><strong>Dígitos por grupo</strong>: Para mejorar la legibilidad, los números grandes se separan mediante espacios formando grupos de una cantidad fija de dígitos. Con esta caja de entrada, puedes determinar la cantidad de dígitos por grupo.</li>
<li><strong>Salida hexadecimal</strong>: Indica que los valores mostrados en pantalla deben figurar en hexadecimal en vez de decimal, que es lo habitual.
Para ingresar números en el formato hexadecimal es necesario que tengan los caracteres 0x adelante. Por ejemplo, 0x38 = 56. El programa muestra números en hexadecimal con tipo monoespaciado.</li>
<li><strong>Teclado</strong>: Esto permite que el usuario seleccione entre el teclado virtual númerico o completo (alfanumérico). El teclado virtual aparece en la pantalla cuando el usuario selecciona una caja de entrada en pantallas táctiles.</li>
</ul>
<p>La configuración se almacena en tu dispositivo, así que si arrancas nuevamente la calculadora, los ajustes no se modificarán.</p>
<h2>Código fuente</h2>
<p>Puedes bajar el código fuente del programa actual y del viejo applet de factorización de enteros gaussianos 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>
</div>
<p>Escrito por Dario Alpern. Actualizado el 10 de noviembre de 2024.</p>
</div>
<div id="helphelp"></div>
<div id="result" aria-live="polite"></div>
<div id="status"></div>
<div id="footer">
<p><span class="new">¡Nuevo!</span> Puedes instalar una aplicación para Android que incluye esta calculadora desde <a href="https://play.google.com/store/apps/details?id=ar.com.alpertron.calculators">Google Play</a>.</p>
<p>Si encuentra algún error o tiene algún comentario, por favor llene el <a href="#" id="formlink">formulario</a>.</p>
<p>Si le gustan estas calculadoras y desea soportar el software libre sin propagandas molestas, puede <a href="https://www.PayPal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MR65QPWZM5JT6&source=url&locale.x=es_ES">donar a través de PayPal</a>.</p>
</div>
</article>
</main>
<div id="modal-more" class="modal" role="dialog" aria-labelledby="moreopt">
<div class="modal-content">
<div class="modal-header"><span id="close-more" aria-label="close" class="atright">×</span><p id="moreopt">Más opciones</p></div>
<div class="modal-body">
<div class="applet">
<p><label for="curve">Nuevo número de curva o factor:</label></p><input type="number" id="curve" value="" class="input" min="0" step="1">
<input type="button" id="ncurve" value="Nueva curva" title="Cambiar el número de curva para el algoritmo ECM. Ingrese cero para cambiar al algoritmo SIQS.">
<input type="button" id="nfactor" value="Nuevo factor" title="Ingrese factor conocido">
</div>
</div></div></div>
<div id="modal-config" class="modal" role="dialog" aria-labelledby="conf">
<div class="modal-content">
<div class="modal-header"><span id="close-config" aria-label="close" class="atright">×</span><p id="conf">Configuración</p></div>
<div class="modal-body">
<div class="applet">
<fieldset>
<legend>Parámetros de configuración</legend>
<p><label for="digits">Dígitos por grupo</label> <input type="number" id="digits" value="6" min="0" max="10000" step="1"></p>
<p><label for="kbd">Teclado: </label><select id="kbd"><option value="num">Numérico</option><option value="comp">Completo</option></select>
<p><input type="checkbox" id="hex"><label for="hex">Salida hexadecimal</label></p>
</fieldset>
<p><input type="button" id="save-config" value="Aceptar" title="Almacenar la nueva configuración"><input type="button" id="cancel-config" value="Cancelar" title="Descartar los cambios hechos a la configuración"></p>
</div>
</div></div></div>
<aside id="feedback" aria-label="Formulario de comentarios">
<h2 class="h2title">Formulario de comentarios</h2>
<form class="applet" id="formfeedback">
<input type="hidden" name="subject" value="Comentario de calculadora de factorización de enteros gaussianos">
<div id="formleft">
<div class="labels"><label for="name">Nombre:</label><input class="inputfbck" type="text" name="Nombre" maxlength="40" id="name" autocomplete="name"></div>
<div class="labels"><label for="age">Edad:</label><input class="inputfbck" type="number" name="Edad" min="0" max="999" id="age"></div>
<div class="labels"><label for="city">Ciudad:</label><input class="inputfbck" type="text" name="Ciudad" maxlength="70" id="city" autocomplete="address-level2"></div>
<div class="labels"><label for="province">Provincia:</label><input class="inputfbck" type="text" name="Provincia" maxlength="70" id="province" autocomplete="address-level1"></div>
<div class="labels"><label for="country">País:</label><input class="inputfbck" type="text" name="Pais" maxlength="70" id="country" autocomplete="country-name"></div>
<div class="labels"><label for="reply">Su e-mail:</label><input class="inputfbck" type="email" name="Responder" maxlength="70" id="reply" autocomplete="email"></div>
<p>Todos los campos son opcionales. Ingrese su dirección de correo electrónico si desea una respuesta del autor de esta aplicación.</p>
<p><input type="checkbox" id="adduserdata"><label for="adduserdata">Enviar expresión a factorizar</label></p>
<input type="hidden" name="datos" value="" id="userdata">
</div>
<div id="formright">
<label for="comments">Por favor, ingrese sus comentarios o sugerencias:</label><br>
<textarea name="Comentarios" rows="7" cols="40" id="comments"></textarea>
<p><label for="how">¿Cómo encontró mi página?</label><br>
<select name="Como" title="¿Cómo encontró mi página?" id="how">
<optgroup label="Seleccione respuesta">
<option value="Por un buscador" selected>Por un buscador</option>
<option value="Por un amigo">Por un amigo</option>
<option value="Por un enlace">Por un enlace</option>
<option value="De Wikipedia">De Wikipedia u otra referencia</option>
<option value="Otros">Otros</option>
</optgroup>
</select></p>
<fieldset><legend>¿Son instructivos los programas?</legend>
<input type="radio" name="Instructivo" value="Si" id="insyes"><label for="insyes">Sí</label>
<input type="radio" name="Instructivo" value="No" id="insno"><label for="insno">No</label>
</fieldset>
<fieldset><legend>¿Son interesantes los programas?</legend>
<input type="radio" name="Interesante" value="Si" id="intyes"><label for="intyes">Sí</label>
<input type="radio" name="Interesante" value="No" id="intno"><label for="intno">No</label>
</fieldset>
<p><button type="submit" disabled="disabled" id="formsend" title="Enviar el formulario">Enviar el<br>comentario</button>
<button type="reset">Entrar<br>otra vez</button>
<button type="button" id="formcancel" title="No enviar el formulario">Cancelar</button></p>
</div>
<div class="lf"></div>
</form>
</aside>
<aside id="sending">
<p>Enviando comentario...</p>
</aside>
<aside id="sentOK">
<p>Comentario enviado correctamente.</p>
<div class="center"><button type="button" id="btnSentOK">Volver</button></div>
</aside>
<aside id="notSent">
<p>No se pudo enviar el comentario.</p>
<div class="center"><button type="button" id="btnNotSent">Volver</button></div>
</aside>
<script type="text/wasmb64" id="wasmb64">
</script>
<script type="text/js-worker" id="worker">
<!--
//-->
</script>
<script>
<!--
//-->
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"browserRequirements": "Requires HTML5. Requires Javascript.",
"name": "Factorización de enteros gaussianos",
"description": "Aplicación Web que factoriza enteros gaussianos de la forma (a+b*i).",
"image": ["https://www.alpertron.com.ar/gausiano.png"],
"datePublished": "2024-11-04",
"dateModified": "2024-11-04",
"operatingSystem": "Any",
"applicationCategory": "EducationalApplication",
"author": {
"@type": "Person",
"name": "Dario Alpern"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"ratingCount": "53"
},
"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>