probableprime library isprobableprime example java string biginteger

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.

Javadoc