Enviado por Kalith en Programacion
Clase BigInteger en java
Buenas.
A diferencia de lo que muchos creían no habia fallecido, ni habia sido abducido por aliens ni nada que se le parezca, por motivos de la universidad y de otros compromisos personales que no valen la pena contar he estado ausente del blog. A lo que voy, existen problemas que las soluciones implican computar números tan grandes que no pueden ser usados tipos de datos nativos para ello, y hacer operaciones tan elementales como una suma o una división pueden complicarse muchísimo, ya en su momento tanto Llyn como yo hablamos de sumar numeros gigantes en c++ utilizando cadenas (std::string), esta vez vamos a usar java que con sus clases nos facilitan un monton la existencia para casos bien particulares
la forma de trabajar BigInteger podemos directamente usar un constructor con parametros o luego asignarle un valor, hay que aclarar que si el valor que se le va a pasar es una cadena, vease un numero muy grande en una cadena tiene que ser creado el objeto con esa cadena como parametro del constructor veamos dos casos
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException
{
BigInteger bi = new BigInteger;
bi.valueOf(500000);
BigInteger bi2 = new BigInteger("10000000000000000000000000000000000000000000000");
}
}
podemos ver dos de las varias formas de inicializar la clase veamos un ejemplo para operaciones básicas.. supongamos que los numeros los obtendremos de entradas por teclado..
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BigInteger bi1 = new BigInteger(in.readLine());
BigInteger bi2 = new BigInteger(in.readLine());
// Suma
System.out.print("La suma es: ");
System.out.println(bi1.add(bi2));
// Multiplicacion
System.out.print("El producto es: ");
System.out.println(bi1.multiply(bi2));
//Cociente (siempre el segundo diferente de 0)
System.out.print("La division es: ");
System.out.println(bi1.divide(bi2));
//Diferencia
System.out.print("La resta es: ");
System.out.println(bi1.subtract(bi2));
}
}
una imagen habla mas que mil palabras
asi podemos seguir revisando las clases y encontrando cosas utiles veamos un ejemplo mas ya conocido el factorial de un numero, y tambien aprovechamos y vemos como convertir BigInteger a String
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
long tope;
System.out.print("Ingrese un numero: ");
tope = Long.parseLong(in.readLine());
BigInteger bi = new BigInteger("1");
for(int i = 2; i <= tope; ++i)
bi = bi.multiply(BigInteger.valueOf(i));
System.out.print(String.valueOf(tope) + "!: ");
System.out.println(bi);
//Convertimos el BigInteger en string y averiguamos su longitud
System.out.println(bi.toString().length());
}
}
nuevamente una imagen para el factorial de 1000
vale la pena acotar que calcule el factorial para 100000 y pues si se tardo un buen rato (pueden comprobarlo ustedes mismos) y la longitud del mismo fue de 456574 digitos. Aqui tiene el programa ya en bytecode solo hay que ejecutarlo (java Main)
Bueno eso es todo por los momentos.
Bye.
Posts Relacionados
- 500! Buenas. Hace unos días en un post sobre permutaciones dabamos...
- Enviar emails con Visual C++ .NET Despues de tiempo sin escribir (ya se me acabaron las...
- Obtener varios valores de una consulta HQL en Hibernate Buenas. Otro Snippet que pude ser interesante, hace una semanas...
- C#: Manejo de archivos de texto (I) Buenas Veamos un poco como manejar los ficheros en la...
- C#: Generar md5 Buenas Primero tenemos que tener ciertas inclusiones, tanto la que...
- Usar una imagen como portada de carpeta en Windows Un tema corto, en Windows existen varias formas de tener...





jajajajajaja Muy buena esa XD… me sorprende tu super matematica hijo xD… Y yo creo que si te violo un alien o.O
Usandohola, solo kiero agradcert por tu gran aport m aservido de mucho en mi trabajo de investagion , gracis, y gracias por seguir la frase “Descargar, Instalar y Compartir”
Usandoque bueno que te sirvió.
Usando