BigInteger en bucle for
Publicado por Cecilia (10 intervenciones) el 29/03/2020 20:16:26
Saludos, estoy haciendo un código que a partir de cuatro variables, utilizando x,y,z,o, con una sustitución simple, donde el programa imprime inicialmente 1, 2, 3, y el siguiente número debe ser la suma de los tres primero, osea que sigue 6, luego 11 y así.
En el bucle por cada pase, x = y, y = z, z = o, donde O = x + y + z
Cada número tiene un puesto, el primer puesto imprime 1, el segundo imprime 2, el tercero 3, el cuarto 6, el quinto 11, y así.
Yo lo simplifiqué para que solamente imprima el puesto deseado, en vez de imprimir todo, solo imprimo el puesto 30, y veo qué valor tiene z en el puesto 30.
El tema es que quiero llegar hasta el puesto número 3030303030303030 y el código que utilizo me indica en los compiladores que nunca llega al ser demasiado largo, si debe haber una manera más corta de solucionarlo, espero que me puedan ayudar.
Utilizo compiladores con Java, no Junit.
En el bucle por cada pase, x = y, y = z, z = o, donde O = x + y + z
Cada número tiene un puesto, el primer puesto imprime 1, el segundo imprime 2, el tercero 3, el cuarto 6, el quinto 11, y así.
Yo lo simplifiqué para que solamente imprima el puesto deseado, en vez de imprimir todo, solo imprimo el puesto 30, y veo qué valor tiene z en el puesto 30.
El tema es que quiero llegar hasta el puesto número 3030303030303030 y el código que utilizo me indica en los compiladores que nunca llega al ser demasiado largo, si debe haber una manera más corta de solucionarlo, espero que me puedan ayudar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.math.BigInteger;
public class BigIntegerClass {
public static void main(String args[]) {
BigInteger x = new BigInteger("1");
BigInteger y = new BigInteger("2");
BigInteger z = new BigInteger("3");
BigInteger o = new BigInteger("0");
BigInteger q = new BigInteger("3030303030303030");
//System.out.println("Puesto 1: " +x);
//System.out.println("Puesto 2: " +y);
//System.out.println("Puesto 3: " +z);
for (BigInteger i = new BigInteger("4"); i.compareTo(q)<=0 ; i = i.add(BigInteger.valueOf(1))){
o = x.add(y.add(z));
x = y;
y = z;
z = o;
System.out.println("Puesto " + i + ": " + z);
}
}
}
Utilizo compiladores con Java, no Junit.
Valora esta pregunta


0