java - library - isprobableprime biginteger
¿Cómo convierto una cadena a un BigInteger? (5)
BigInteger tiene un constructor donde puedes pasar una cadena como argumento.
intente a continuación,
private void sum(String newNumber) {
// BigInteger is immutable, reassign the variable:
sum = sum.add(new BigInteger(newNumber));
}
Estoy tratando de leer algunos números realmente grandes de entrada estándar y sumarlos.
Sin embargo, para agregar a BigInteger, necesito usar BigInteger.valueOf(long);
:
private BigInteger sum = BigInteger.valueOf(0);
private void sum(String newNumber) {
// BigInteger is immutable, reassign the variable:
sum = sum.add(BigInteger.valueOf(Long.parseLong(newNumber)));
}
Eso funciona bien, pero como BigInteger.valueOf()
solo tarda long
, no puedo sumar números mayores que el valor máximo de long (9223372036854775807).
Cada vez que intento agregar 9223372036854775808 o más, recibo una NumberFormatException (que es completamente esperado).
¿Hay algo como BigInteger.parseBigInteger(String)
?
En lugar de usar valueOf(long)
y parse()
, puedes usar directamente el constructor BigInteger que toma un argumento de cadena:
BigInteger numBig = new BigInteger("8599825996872482982482982252524684268426846846846846849848418418414141841841984219848941984218942894298421984286289228927948728929829");
Eso debería darle el valor deseado.
Para un bucle en el que desea convertir una array
de strings
en una array
de bigIntegers
haga esto:
String[] unsorted = new String[n]; //array of Strings
BigInteger[] series = new BigInteger[n]; //array of BigIntegers
for(int i=0; i<n; i++){
series[i] = new BigInteger(unsorted[i]); //convert String to bigInteger
}
Según la documentation :
BigInteger (String Val)
Traduce la representación de cadena decimal de un BigInteger en un BigInteger.
Esto significa que puedes usar una String
para inicializar un objeto BigInteger
, como se muestra en el siguiente fragmento de código:
sum = sum.add(new BigInteger(newNumber));
Usando el constructor
BigInteger (String Val)
Traduce la representación de cadena decimal de un BigInteger en un BigInteger.