Java - Ayuda para potenciar dos valores biginteger

 
Vista:

Ayuda para potenciar dos valores biginteger

Publicado por Lucho9964 (17 intervenciones) el 05/04/2020 19:46:49
Hola chicos, he intentado varias cosas para potenciar dos valores biginteger, pero no consigo saber cómo, si alguien sabe, estaré muy al tanto de vuestras respuestas. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-2
Responder
Imágen de perfil de Sandro
Val: 392
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para potenciar dos valores biginteger

Publicado por Sandro (166 intervenciones) el 26/05/2020 14:57:59
Los programas nuevos tienen la facilidad o ocurrencia que es llamarse a si mismo como:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class CalcularFactorial {
 
public static void main(String[] args) {
 System.out.println(factorial(50));
}
 
static double factorial(double n){
 if (n == 1.0)
  return 1.0;
 else
  return n*factorial(n-1);
 }
}


En ese aspecto encontré varios problemas:
1
2
3
1.- guarda en memoria todas las llamadas por medio de apuntadores, y guarda en memoria toda la información de la multiplicación y de los cálculos
2.- guarda todas las veces los apuntadores del nuevo ciclo
3.- esta limitante que pongo que solamente alberga 25000 posiciones, era por la forma de que esta pagina lo resuelvo, y esas 25000 posiciones solamente es una limitante de la memoria de la computadora

Cambie a la forma tradicional que es en ciclo interno no llamarse a si mismo, y supera en mucho en esa limitante de 25000 posiciones. y en poco tiempo con el numero de factorial 72,918,925. Y la computadora no termina la tarea como es el caso anterior.

Ese numero lo obtuvo su factorial en:
1
2
3
4
1.- un numero con dos cifras finales menor a ese fue
long:3958440 tiempo en segundos:377
 
Erróneamente le dije que mandara la información y se acaba el tiempo

Les paso el código:
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
protected	static	java
							.math
							.BigInteger
									factorial	(	boolean
														msn									,
													long
														num_Factorial							)	{
		java
			.math
			.BigInteger		num_Gigante			=	new	java
															.math
															.BigInteger
												(		"1"										)	;
		do																							{
			java
				.math
				.BigInteger		num_Factorial_S	=	convert
														.stringToBigInteger
												(		convert
														.longToString
												(		num_Factorial						)	)	;
			num_Gigante							=	num_Gigante
														.multiply
												(		num_Factorial_S							)	;
			num_Factorial						--													;
		}	while	(	num_Factorial			>	1											)	;
		return			num_Gigante																	;
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda para potenciar dos valores biginteger

Publicado por Tom (1831 intervenciones) el 25/05/2020 18:53:17
Copio y pego de la doc. de BigInteger (https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html) que supongo que ye te has leído ¿ no ?
"BigInteger constructors and operations throw ArithmeticException when the result is out of the supported range of -2^Integer.MAX_VALUE (exclusive) to +2^Integer.MAX_VALUE (exclusive)."

Y además el método pow
https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#pow-int-
sólo acepta un exponente de tipo int.

Si la implementación del JDK no te vale, hay librerías externas, por ejemplo las enumeradas en:

https://en.wikipedia.org/wiki/List_of_arbitrary-precision_arithmetic_software#Libraries
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 392
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para potenciar dos valores biginteger

Publicado por Sandro (166 intervenciones) el 07/06/2020 23:22:05
Hice un pequeño programa que te multiplique cualquier longitud inimaginable por otro de las mismas características, ya que el ejemplo que esta aquí de BigInteger no me satisface ya que se mete en el loop,

Quise saca el factorial de arriba de 70000, ya no funciona.


En estos momentos esta corriendo el programa que hice con la competencia de el ejemplo de factorial de BigInteger, a ver que pasa.

Les mando el programa de entrada te multiplica cualquier numero de la longitud que sea, puedes de hasta 2, 147, 483, 647, caracteres. Se verifico con excel claro solamente hasta su limite, ya que solo te presenta 16 caracteres, el mio esta un poco mas grande.

Prueba el programa con el método matemáticas.multiplicación(num1, num2) en String.

Para evitar buscar a cada ratos, como se paso un char a un int.

pues usas el convert.charToString(char)

o que pasa con el que pasa de long a String

pues convert.longToString

que paso con adicionar cualquier tipo de arreglo un carácter mas al fin, o al principio

Add.push(salida,alfinal) o Add.push(alprincipio,salida)

pero que paso si quiero un arreglo de int a arreglo de String facil, a tambien se pueden borrar linea o celdas

Add.push(salidaString,entradaInt) a pero son arreglo no dos dimensiones el mismo comando,

Tipo aceptados int, boolean, char, string, int y long

entrada salida a hasta dos dimensiones

a pero que pasa con el subString tambien esta ahi. subString.recorta(hasta-lugar,registro), subString.recorta(hasta-lugar,longitud,registro)

a que pasa si quiero imprimir un arreglo, de dos dimensiones a fácil,
print.linea(arreglo-dos-una-simple-int-string-char-boolean-long,arreglo-dos-una-simple-int-string-char-boolean-long) con los campos o uno

Que pasa si quiero que me diga la linea en que truena y por donde pasa, a pues facil, print.lineaE(igual parametros), pero no quiero que truene lineaW(igual)

Necesito hacer un manual de esto, quiere buscar algo, pues find_1, con el método .a o quieres saber si isNumeric, isEmail, quieres remplazar algo r.

Tengo muchas mas que hacen las cosas mas comunes, pero solo una prueba de lo que se puede lograr con java,

yo soy programador y me gustan las cosas modulares, no repetitivas.

Voy hacer un manual por que muchas cosas les mando, y no están explicadas todas.

Ese nombre que tengo aquí es un nick.

las multiplicaciones te los acepta en int, arreglo de caracteres o String

cualquier duda escríbeme
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 392
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para potenciar dos valores biginteger

Publicado por Sandro (166 intervenciones) el 08/06/2020 09:55:36
mi pensamiento nunca deja de meditar, y después de haber publicado estos programas que pueden ayudar a muchos de nosotros.

comprendí, que los números negativos, y números decimales, no entran, o por error no los incluí.

Esa es una mejora.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar