Escolar Documentos
Profissional Documentos
Cultura Documentos
CmosumarymultiplicararraysenJava|katodia
CLCULO DE
GRANDES
NMEROS
SUMA Y
MULTIPLICACIN
DE ARRAYS
EN JAVA
Alguna vez te has preguntado
cmo ciertas aplicaciones de
calculadora pueden operar con
nmeros muy grandes? Si
casualmente habis programado
en Java o C/C++, sabis que los
tipos primitivos de datos numricos
tienen una longitud limitada. Por
ejemplo, los tipos numricos
enteros en Java:
TIPO DE
N DE
DATO
BYTES
RANGO VALORES
NUMRICO
byte
-128 a 127
short
-32768 a 32767
int
-2147483648 a
2147483647
http://katodia.com/2015/08/sumaymultiplicaciondearraysenjava/
1/7
24/11/2016
CmosumarymultiplicararraysenJava|katodia
TIPO DE
N DE
DATO
BYTES
RANGO VALORES
NUMRICO
long
-9223372036854775808
a
9223372036854775807
Consideraciones previas
1. Por cuestiones de comodidad,
voy a revertir el orden de las
cifras de un nmero, tal que:
1 int[]a=newint[]{3,
http://katodia.com/2015/08/sumaymultiplicaciondearraysenjava/
2/7
24/11/2016
CmosumarymultiplicararraysenJava|katodia
mostrar el resultado en su
orden propio.
Suma
Algoritmo:
1. Dados 2 nmeros naturales
positivos, se cumple la
condicin de que el resultado
de su suma tendr, como
mucho, 1 cifra ms que el
sumando ms grande.
Declarar array con la longitud
ms grande, ms 1.
2. Nos colocamos en la posicin
primera de cada array.
Inicializamos la suma al valor
de la posicin del array
resultado, para contabilizar el
acarreo.
3. Acumular el valor del primer
array, mientras su longitud no
se haya excedido.
4. Acumular el valor del segundo
array, mientras su longitud no
se haya excedido.
5. Asignar a la posicin actual del
array resultado, el resto de
divir la suma entre 10.
6. Acumular en la posicin
siguiente el acarreo actual, es
decir, el cociente de dividir la
suma entre 10.
7. Si hemos llegado al nal del
array resultado, FIN. Si no,
sumar 1 a la posicin actual y
volver al paso 2.
Funcin:
1
2
3
4
5
6
7
8
9
10
11
publicstaticint[]sumar
intlongitud;
if(b.length>a.length
elselongitud=a.length
int[]r=newint[longitud
for(inti=0;i<r
for(inti=0;i<r
intsuma=r[i];
http://katodia.com/2015/08/sumaymultiplicaciondearraysenjava/
3/7
24/11/2016
CmosumarymultiplicararraysenJava|katodia
12
13
14
15
16
17
18
19
20
21
if(i<a.length)
if(i<b.length)
r[i]=(suma%10
r[i+1]+=suma
}
returnr;
}
Multiplicacin
Algoritmo:
1. Dados 2 nmeros naturales
positivos, se cumple la
condicin de que el resultado
de su multiplicacin tendr,
como mucho, 1 cifra ms que
la suma de sus nmeros de
cifras. Declarar array con
longitud = longitud del primero
+ longitud del segundo + 1.
2. Mediante dos bucles anidados,
calculamos el producto de
cada cifra, al cual le
sumaremos el acarreo actual.
La posicin correspondiente al
array resultado, coindice con la
suma de los ndices de ambos
arrays.
3. Asignar a la posicin actual del
array resultado, el resto de
dividir la multiplicacin entre
10.
4. Acumular en la posicin
siguiente el acarreo actual, es
decir, el cociente de dividir la
multiplicacin entre 10.
5. Si hemos alcanzado el nal del
array resultado, FIN. Si no,
pasar a la siguiente cifra.
Funcin:
1
2
3
4
5
6
7
publicstaticint[]multiplicar
int[]r=newint[a
for(inti=0;i<r
for(inti=0;i<
for(intj=0;j
http://katodia.com/2015/08/sumaymultiplicaciondearraysenjava/
4/7
24/11/2016
CmosumarymultiplicararraysenJava|katodia
8
9
10
11
12
13
14
15
intmul=r[i
r[i+j]=mul
r[i+j+1]
}
}
returnr;
}
publicclassOperacionesArrays
publicstaticvoidmain(
int[]a=newint[]
int[]b=newint[]
int[]rSuma=sumar(
int[]rMultiplicacion
mostrar(rSuma);
mostrar(rMultiplicacion
}
publicstaticint[]sumar
if(b.length>a.length
elselongitud=a.length
int[]r=newint[longitud
for(inti=0;i<r
for(inti=0;i<r
intsuma=r[i];
if(i<a.length)
if(i<b.length)
r[i]=(suma%10
r[i+1]+=suma
}
returnr;
}
publicstaticint[]multiplicar
int[]r=newint[a
for(inti=0;i<r
for(inti=0;i<
for(intj=0;j
intmul=r[i
r[i+j]=mul
r[i+j+1]
}
}
returnr;
}
publicstaticvoidmostrar
http://katodia.com/2015/08/sumaymultiplicaciondearraysenjava/
5/7
24/11/2016
CmosumarymultiplicararraysenJava|katodia
53
54
55
56
57
58
59
60
for(inti=a.length
System.out.print(
}
System.out.println();
}
6/7
24/11/2016
CmosumarymultiplicararraysenJava|katodia
11 AGOSTO, 2015
0 COMENTARIOS
Quizs te interese
Java programacin
0
COMENTARIOS
http://katodia.com/2015/08/sumaymultiplicaciondearraysenjava/
7/7