-
Notifications
You must be signed in to change notification settings - Fork 39
/
TCUADCUB.HTM
524 lines (524 loc) · 35.4 KB
/
TCUADCUB.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
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
<!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="waring, teoría de números">
<meta name="description" content="Aplicación Web que descompone un número en una suma de dos cuadrados perfectos y un cubo, una quinta o una séptima potencia. Hecho por Dario Alpern.">
<meta name="theme-color" content="#db5945">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:title" content="Suma de dos cuadrados y una potencia perfecta">
<meta property="og:type" content="article">
<meta property="og:site_name" content="Alpertron">
<meta property="og:url" content="https://www.alpertron.com.ar/TCUADCUB.HTM">
<meta property="og:image" content="https://www.alpertron.com.ar/tsqcubes.png">
<meta property="og:image:width" content="612">
<meta property="og:image:height" content="326">
<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="La potencia perfecta puede ser un cubo, una quinta o séptima potencia.">
<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/TCUADCUB.HTM">
<link rel="alternate" hreflang="en" href="https://www.alpertron.com.ar/TSQCUBES.HTM">
<link rel="manifest" href="tcuadcub.webmanifest">
<link rel="icon" href="favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="tsqcubes-icon-180px.png">
<link rel="canonical" href="https://www.alpertron.com.ar/TCUADCUB.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>Suma de dos cuadrados y una potencia perfecta</title>
<style>
@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}
.inputfbck{width: calc(100% - 10em);float:right;padding:3px;margin:0px;}
@media (max-width: 400px) {nav {font-size:0.7em}}
@media (min-width: 400px) {nav {font-size:1em}}
@media (min-width: 500px) {#formleft {float:left;width:50%;} #formright {float:right;width:50%;}}
}
@media print {nav, #footer {display:none}}
.modal-header {padding: 2px 10px; background-color: #5cb85c; color: white}
.modal-body {padding: 2px 10px}
.modal-content {
position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
background-color: #fefefe;
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);
}
.modal {
display: none;
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
input[type=text], input[type=email], input[type=number] {min-height:2em; border-radius:10px}
input[type=button], button {min-height:2.5em; min-width:2.5em; border-radius:5px}
#close {float:right}
#modal-header-text {font-size:1.5em}
#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:"›"}
.new {color: #0000FF; font-weight:bold}
body {font-family: Arial, sans-serif; margin: 0; padding: 0;}
h1, .h2title {text-align:center}
.wzdact, #actions button {color: white; background-color: #3b3b3b; margin:3px; border-radius:10px}
#actions button {min-height:90%}
.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}
.applet {margin-left: auto;margin-right: auto; border: 0px none;width:90%;text-align:center;background-color:#c0c0c0;padding:10px;border-radius:10px}
.newline {clear:both}
#valueapp, #wzdupper {display:grid}
#mode {grid-column:1; grid-row:1}
#output {grid-column:2; grid-row:1}
#wzdexam {margin-block-start:0; margin-block-end:0}
.atright {float:right}
.funcbtn {margin:3px}
#num {white-space:pre;overflow-wrap:normal;overflow:auto;margin:5px;width:100%;padding:3px}
#stop, #cont, #wizard, #feedback {display:none}
.lf,.labels {padding:0.2em; clear:both; width:100%}
.offscr {position:absolute;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);padding:0;border:0;height:1px;width:1px;overflow:hidden;}
.bigger {font-size:150%}
.pad, #footer {padding:10px}
.hex {font-family: Courier, "Lucida Console", monospace}
.und {text-decoration: underline}
.diginput {width:7em}
@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 (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}
#output {grid-column:1; grid-row:2}
}
@media (min-width: 53em) {
#inputs {grid-column:1/3; grid-row:1}
#actions {grid-column:1; grid-row:2; width:320px}
#functions {grid-column:2/3; grid-row:2}
}
@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, #calc, #calc5, #calc7 {color: white; background-color: #3b3b3b}
button:disabled {color: #808080; background-color: #606060}
.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="TSQCUBES.HTM" hreflang="en" title="This Web page in English">ENG</a></li></ul>
</nav>
<main id="main">
<article>
<h1>Suma de dos cuadrados y una potencia perfecta</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">Suma de dos cuadrados y una potencia</span>
<meta property="position" content="3">
</li>
</ol>
<br><br>
<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" id="valueapp">
<div id="inputs">
<label for="num">Número a descomponer en suma de dos cuadrados y una potencia perfecta</label>
<textarea inputmode="numeric" id="num" rows="4" class="input"></textarea>
</div>
<fieldset id="actions"><legend>Acciones</legend>
<div class="actbtn">
<button type="button" id="calc" title="Hallar suma de dos cuadrados y un cubo."><var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> + <var>c</var><sup>3</sup></button>
<button type="button" id="calc5" title="Hallar suma de dos cuadrados y una potencia quinta."><var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> + <var>c</var><sup>5</sup></button>
<button type="button" id="calcN" title="Hallar suma de dos cuadrados y una potencia impar."><var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> + <var>c</var><sup><var>n</var></sup></button>
</div>
<div class="actbtn">
<button type="button" id="stop" title="Detener cálculo">Parar</button>
<button type="button" id="helpbtn" title="Leer información sobre la calculadora">Ayuda</button>
<button type="button" id="openwizard" title="Facilitar el ingreso de expresiones y ciclos">Abrir<br>asistente</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>
<label for="expon"><var>n</var> (impar):</label><br>
<input type="number" id="expon" class="diginput" value="7" step="2" min="1">
</div>
</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">Procesamiento en lotes</option>
<option value="2">Comparaciones</option>
<option value="3">Lógica</option>
<option value="4">Divisibilidad</option>
<option value="5">Matemática recreativa</option>
<option value="6">Teoría de números</option>
<option value="7">Otros</option>
</optgroup>
</select>
<div class="funcbtns" id="funcbtns">
<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">/</button><button type="button">%</button><button type="button">^</button><button type="button">ans</button><button type="button">sqrt(</button><button type="button">iroot(</button><button type="button">Random(</button><button type="button">Abs(</button><button type="button">Sign(</button>
</div>
</fieldset>
</div>
<div class="pad">
<div id="help" aria-live="polite">
<p>Esta aplicación Web encuentra la descomposición de cualquier número entero en una suma de dos cuadrados perfectos y un cubo perfecto o quinta o séptima potencia.</p>
<h2>Método</h2>
<p>Sea <var>r</var> el exponente del tercer número: 3, 5 o 7, y <var>n</var> el número a descomponer.</p>
<ul>
<li>Paso 1: Calcular el primer valor potencial de <var>c</var> como la <var>r</var>-ésima raíz redondeado al entero inmediatamente inferior (hacia menos infinito).</li>
<li>Paso 2: Sea <var>d</var> = <var>n</var> − <var>c</var><sup><var>k</var></sup>. El número <var>d</var> no es negativo.</li>
<li>Paso 3: Tratar de descomponer <var>d</var> como suma de dos cuadrados.
<ul>
<li>Paso 3.1: Si <var>d</var> vale cero, la salida es is 0 = 0<sup>2</sup> + 0<sup>2</sup>. Ir al paso 5.</li>
<li>Paso 3.2: Calcular <var>p</var> y <var>q</var> tales que <var>d</var> = <var>p</var> × 4<sup><var>q</var></sup>, donde <var>p</var> no es múltiplo de 4.</li>
<li>Paso 3.3: Si el resto de la división de <var>p</var> dividido 8 no es 1, 2 o 5, el número <var>d</var> no se puede expresar como suma de dos cuadrados, así que se debe restar 1 a <var>c</var> y volver al paso 2.</li>
<li>Paso 3.4: Hacer divisiones sucesivas para hallar factores primos pequeños de <var>d</var>. La cota superior en este programa es 32767.</li>
<li>Paso 3.5: Si hay un factor primo de la forma 4<var>k</var> + 3 y su multiplicidad es impar, <var>d</var> no puede ser la suma dos cuadrados, así que se debe restar 1 a <var>c</var> y volver al paso 2.</li>
<li>Paso 3.6: Si el cofactor no es un primo probable, no podemos determinar si <var>d</var> puede ser la suma de dos cuadrados, así que se debe restar 1 a <var>c</var> y volver al paso 2.</li>
<li>Paso 3.7: Usar los métodos para dos cuadrados que se muestran en la página <a href="https://www.alpertron.com.ar/4CUADR.HTM">Todo entero positivo es una suma de cuatro cuadrados perfectos</a>
para hallar <var>d</var> = <var>a</var><sup>2</sup> + <var>b</var><sup>2</sup>.</li>
</ul></li>
<li>Paso 4: Multiplicar las variables <var>a</var> y <var>b</var> por 2<sup><var>q</var></sup>.</li>
<li>Paso 5: Mostrar la descomposición como <var>n</var> = <var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> + <var>c</var><sup><var>k</var></sup>.</li>
</ul>
<div id="expr">
<h2>Expresiones</h2>
<p>Además de ingresar números en la caja de entrada, se pueden escribir expresiones numéricas incluyendo paréntesis. A continuación se muestran las operaciones permitidas:</p>
<ul>
<li> + para suma</li>
<li> - para resta</li>
<li> * para multiplicación</li>
<li> / para división entera</li>
<li> % para el resto de la división entera</li>
<li> ^ o ** para exponenciación (el exponente debe ser mayor o igual que cero).</li>
<li> <strong><</strong>, <strong>==</strong>, <strong>></strong>; <strong><=</strong>, <strong>>=</strong>, != para comparaciones. Los operadores devuelven cero si es falso y -1 si es verdadero.</li>
<li> <strong>Ans</strong>: obtiene la última respuesta.</li>
<li> <strong>AND</strong>, <strong>OR</strong>, <strong>XOR</strong>, <strong>NOT</strong> para lógica binaria. Las operaciones se hacen en binario (base 2). Se agregan infinitos ceros (unos) a la izquerda de los números positivos (negativos).</li>
<li> <strong>SHL</strong> o <strong><<</strong>: Si <var>b</var> ≥ 0, <var>a</var> SHL <var>b</var> desplaza el valor <var>a</var> a la izquierda la cantidad de bits especificada por <var>b</var>. Esto equivale a <var>a</var> × 2<sup><var>b</var></sup>. En caso contrario, <var>a</var> SHL <var>b</var> desplaza el valor <var>a</var> a la derecha la cantidad de bits especificada por −<var>b</var>. Esto equivale a floor(<var>a</var> / 2<sup>−<var>b</var></sup>). Ejemplo: 5 SHL 3 = 40.</li>
<li> <strong>SHR</strong> o <strong>>></strong>: Si <var>b</var> ≥ 0, <var>a</var> SHR <var>b</var> desplaza el valor <var>a</var> a la derecha la cantidad de bits especificada por <var>b</var>. Esto equivale a floor(<var>a</var> / 2<sup><var>b</var></sup>). En caso contrario, <var>a</var> SHR <var>b</var> desplaza el valor <var>a</var> a la izquierda la cantidad de bits especificada por −<var>b</var>. Esto equivale a <var>a</var> × 2<sup>−<var>b</var></sup>. Ejemplo: -19 SHR 2 = -5.</li>
<li> <strong>n!</strong>: factorial (<var>n</var> debe ser mayor o igual que cero). Ejemplo: 6! = 6 × 5 × 4 × 3 × 2 = 720.</li>
<li> <strong>n!! ... !</strong>: factorial múltiple (<var>n</var> debe ser 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 a <var>p</var>). Ejemplo: 12# = 11 × 7 × 5 × 3 × 2 = 2310.</li>
<li> <strong>B(n)</strong>: Número probablemente primo anterior a <var>n</var>. Ejemplo: B(24) = 23.</li>
<li> <strong>F(n)</strong>: Número de Fibonacci F<sub>n</sub> que corresponde a la secuencia 0, 1, 1, 2, 3, 5, 8, 13, 21, etc. donde cada elemento es igual a la suma de los dos anteriores. Ejemplo: F(7) = 13.</li>
<li> <strong>L(n)</strong>: Número de Lucas L<sub>n</sub> = F<sub><var>n</var>-1</sub> + F<sub><var>n</var>+1</sub></li>
<li> <strong>N(n)</strong>: Número probablemente primo posterior a <var>n</var>. Ejemplo: N(24) = 29.</li>
<li> <strong>P(n)</strong>: particiones irrestrictas (cantidad de descomposiciones de <var>n</var> en sumas de números enteros sin tener en cuenta el orden). Ejemplo: P(4) = 5 porque el número 4 se puede particionar de 5 formas distintas: 4 = 3+1 = 2+2 = 2+1+1 = 1+1+1+1.</li>
<li> <strong>Gcd(m,n, ...)</strong>: Máximo común divisor de estos números enteros. Ejemplo: GCD(12,16) = 4.</li>
<li> <strong>Lcm(m,n, ...)</strong>: Mínimo común múltiplo de estos números enteros. Ejemplo: LCM(12,16,24) = 48.</li>
<li> <strong>Mod(m,n)</strong>: valor de <var>m</var> módulo el valor absoluto de <var>n</var>. Ejemplos: Mod(10, 7) = 3 y Mod(-10, 7) = 4.</li><li> <strong>Modinv(m,n)</strong>: inverso de <var>m</var> modulo <var>n</var>, sólo válido cuando <var>m</var> y <var>n</var> son coprimos, es decir que no tienen factores en común. Ejemplo: Modinv(3,7) = 5 porque 3 × 5 ≡ 1 (mod 7)</li>
<li> <strong>Modinv(m,n)</strong>: inverso de <var>m</var> módulo <var>n</var>, sólo válido cuando <var>m</var> y <var>n</var> son coprimos, es decir que no tienen factores en común. Ejemplo: Modinv(3,7) = 5 porque 3 × 5 ≡ 1 (mod 7)</li>
<li> <strong>Modpow(m,n,r)</strong>: halla <var>m</var><sup><var>n</var></sup> módulo <var>r</var>. Ejemplo: Modpow(3, 4, 7) = 4, porque 3<sup>4</sup> ≡ 4 (mod 7).</li>
<li> <strong>Totient(n)</strong>: cantidad de enteros positivos menores que <var>n</var> coprimos con <var>n</var>. Ejemplo: Totient(6) = 2 porque 1 y 5 no tienen factores en común con 6.</li>
<li> <strong>Jacobi(m,n)</strong>: obtiene el símbolo de Jacobi de <var>m</var> y <var>n</var>. Cuando el segundo argumento es primo, el resultado es cero si <var>m</var> es múltiplo de <var>n</var>, es uno si hay una solución a <var>x</var>² ≡ <var>m</var> (mód <var>n</var>) y es igual a −1 cuando la congruencia mencionada no tiene soluciones.</li>
<li> <strong>Random(m,n)</strong>: número entero aleatorio entre <var>m</var> y <var>n</var>.</li>
<li> <strong>Abs(n)</strong>: valor absoluto de <var>n</var>.</li>
<li> <strong>Sign(n)</strong>: retorna cero si <var>n</var> es zero, −1 si es negativo o 1 si es positivo.</li>
<li> <strong>IsPrime(n)</strong>: retorna cero si <var>n</var> no es un primo probable y −1 si lo es. Ejemplo: IsPrime(5) = −1.</li>
<li> <strong>Sqrt(n)</strong>: parte entera de la raíz cuadrada del argumento.</li>
<li> <strong>Iroot(n,r)</strong>: Raíz r-ésima entera del primer argumento. Ejemplo: Iroot(8, 3) = 2.</li>
<li> <strong>NumDigits(n,r)</strong>: cantidad de dígitos de <var>n</var> en base <var>r</var>. Ejemplo: NumDigits(13, 2) = 4 porque 13 en binario (base 2) se expresa como 1101.</li>
<li> <strong>SumDigits(n,r)</strong>: suma de dígitos de <var>n</var> en base <var>r</var>. Ejemplo: SumDigits(213, 10) = 6 porque la suma de los dígitos expresados en decimal es 2+1+3 = 6.</li>
<li> <strong>RevDigits(n,r)</strong>: halla el valor que se obtiene escribiendo para atrás los dígitos de <var>n</var> en base <var>r</var>. Ejemplo: RevDigits(213, 10) = 312.</li>
</ul>
<p>Puedes usar el prefijo <em>0x</em> para números hexadecimales, por ejemplo 0x38 es igual a 56.</p>
</div>
<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>Procesamiento en lotes</h2>
<p>Escribe una expresión por línea, y luego aprieta el botón que corresponde a la suma de potencias que quieres hallar.</p>
<p>Las líneas en blanco o de comentarios (que comienzan con el carácter numeral '#') se replicarán en la salida.</p>
<p>Expresión para ciclos: con la siguiente sintaxis podrás obtener la descomposición como suma de potencias con sólo digitar una línea. Deberás escribir cuatro o cinco expresiones separadas por puntos y coma:</p>
<ul>
<li>Primera expresión: Debe comenzar con la cadena 'x=' e indica el primer valor para la variable <var>x</var>.</li>
<li>Segunda expresión: Debe comenzar con la cadena 'x=' e indica el siguiente valor para la variable <var>x</var>.</li>
<li>Tercera expresión: Contiene la expresión de finalización del ciclo. Si es distinto que cero (indicando verdadero) el ciclo termina, en caso contrario, continúa.</li>
<li>Cuarta expresión: Contiene la expresión que se debe expresar como suma de potencias.</li>
<li>Quinta expresión (opcional): Si esta expresión no vale cero (indicando verdadero), se muestra o descompone en suma de potencias la cuarta expresión, y si es cero (indicando falso), se ignora la cuarta expresión.</li>
</ul>
<p>Excepto la primera expresión, las demás expresiones deben incluir la variable <var>x</var> y/o el contador <var>c</var>.</p>
<p>Si la expresión de finalización es falsa después de procesar 1000 números, aparecerá el botón Continuar. Apretando este botón hará que el programa procese los siguientes 1000 números, y así sucesivamente.</p>
<p>Ejemplo 1: Hallar la descomposición en suma de potencias de los números entre cero y 5000.
La línea a escribir es: <code>x=0;x=x+1;x<=5000;x</code>. La calculadora mostrará los resultados en bloques de 1000 valores. Deberá presionar el botón Continuar para obtener el siguiente bloque.</p>
<p>Ejemplo 2: Hallar la descomposición en suma de potencias de los primeros 100 números de la forma primo impar menos uno.
La línea a escribir es: <code>x=3;x=n(x);c<=100;x-1</code>.</p>
<p>La cuarta expresión se puede reemplazar por una cadena de formato y varias expresiones. La cadena de formato indica lo que se debe mostrar en pantalla. Dentro de esta cadena se pueden especificar cláusulas de conversión que comienzan con el carácter de porcentaje y pueden ser en minúsculas o mayúsculas:</p>
<ul>
<li><strong>%D</strong>: mostrar la expresión como un número en decimal.</li>
<li><strong>%X</strong>: mostrar la expresión como un número en hexadecimal.</li>
<li><strong>%L</strong>: mostrar <strong>sí</strong> si la expresión no es cero y <strong>no</strong> si es cero.</li>
<li><strong>%FD</strong>: descomponer en suma de potencias y mostrar los valores en decimal.</li>
<li><strong>%FX</strong>: descomponer en suma de potencias y mostrar los valores en hexadecimal.</li>
</ul>
<p>Las expresiones se escriben después de la cadena, separadas por dos puntos. También debe haber dos puntos entre la cadena y la primera expresión.</p>
<p>Para mostrar el símbolo de procentaje, se deben usar dos símbolos de porcentaje seguidos, y la comilla se representa mediante un símbolo de porcentaje seguido por una comilla.</p>
<p>Ejemplo 3: Por cada número entre 0 y 100, mostrar si el número es primo y luego mostrar la descomposición como suma de potencias tanto en decimal como en hexadecimal.</p>
<p>La línea a escribir es: <code>x=0; x=x+1; x<=100; "%d es primo: %l, %Fd, %Fx":x:isprime(x):x:x</code>
<div class="noand">
<h2>Código fuente</h2>
<p>Se puede bajar el código fuente de este programa 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>
<div id="cont" class="pad">
<input type="button" id="continue" value="Continuar">
</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>
<aside id="wizard" aria-label="Asistente">
<h2 class="h2title">Asistente de suma de dos cuadrados y potencia perfecta</h2>
<div class="applet">
<div id="wzdupper">
<fieldset id="output">
<legend>Salida</legend>
<input type="radio" name="output" id="decW"><label for="decW">Decimal</label><br>
<input type="radio" name="output" id="hexW"><label for="hexW">Hexadecimal</label><br>
</fieldset>
<fieldset id="mode">
<legend>Modo asistente</legend>
<input type="radio" name="mode" id="oneexpr"><label for="oneexpr">Procesar una expresión</label><br>
<input type="radio" name="mode" id="loop"><label for="loop">Procesar varias expresiones en un ciclo</label><br>
</fieldset>
</div>
<label for="wzdinput" id="wzddesc">1</label>
<br class="newline">
<input type="text" inputmode="numeric" id="wzdinput" value="" placeholder="Número o expresión numérica" class="input">
<br class="newline">
<p id="wzdexam"> </p>
<input type="button" id="next" class="wzdact" value="Siguiente" title="Siguiente paso del asistente">
<input type="button" id="cancel" class="wzdact" value="Cancelar" title="Salir del asistente">
<div id="wzdfunccatblock">
<label for="wzdfunccat">Categorías de funciones:</label>
<select id="wzdfunccat">
<optgroup label="Funciones u operadores">
<option value="0" selected>Matemática básica</option>
<option value="1">Comparaciones</option>
<option value="2">Lógica</option>
<option value="3">Divisibilidad</option>
<option value="4">Matemática recreativa</option>
<option value="5">Teoría de números</option>
<option value="6">Otros</option>
</optgroup>
</select>
</div>
<div class="funcbtns" id="wzdfuncbtns"></div>
</div>
<div id="exprwiz"></div>
<ul>
<li id="C">Variable <var>C</var>: cantidad de expresiones procesadas.</li>
<li id="X">Variable <var>X</var>: variable que cambia en cada iteración del ciclo.</li>
</ul>
</aside>
<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="numeric">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 suma de dos cuadrados y potencia">
<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 descomponer como suma de dos cuadrados y potencia</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>
<!--
//-->
</script>
<script type="text/js-worker" id="worker">
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"browserRequirements": "Requires HTML5. Requires Javascript.",
"name": "Suma de dos cuadrados y una potencia perfecta",
"description": "Aplicación Web application que descompone un número en una suma de dos cuadrados y un cubo, quinta o séptima potencia.",
"image": ["https://www.alpertron.com.ar/tsqcubes.png"],
"datePublished": "2024-11-04",
"dateModified": "2024-11-04",
"operatingSystem": "Any",
"applicationCategory": "EducationalApplication",
"author": {
"@type": "Person",
"name": "Dario Alpern"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "3.8",
"ratingCount": "14"
},
"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>