Para um algoritimo preciso pegar o resultado da raiz quadrada de 600851475143, mas o Math.sqrt() não suporta o tamanho do arquivo =/. E o BigInteger não tem nenhuma operação de raiz quadrada. Alguém conhece outra api?
BigInteger - raiz quadrada
3 Respostas
double res = Math.pow(600851475143d, 1/2);
B
package guj;
import java.math.BigInteger;
public class ISqrt {
/**
* http://en.wikipedia.org/wiki/Integer_square_root
* @param n The integer value
* @return isqrt (n)
*/
public static BigInteger isqrt (BigInteger n) {
if (n.signum() == -1)
throw new ArithmeticException("Can't evaluate square roots of negative numbers");
else if (n.signum() == 0)
return BigInteger.ZERO;
BigInteger xk = n, xk1;
BigInteger two = BigInteger.valueOf(2L);
while (true) {
xk1 = xk.add(n.divide(xk)).divide(two);
if (xk1.subtract(xk).abs().compareTo(BigInteger.ONE) <= 0)
break;
xk = xk1;
}
return xk1;
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println (ISqrt.isqrt(BigInteger.valueOf (1234).multiply(BigInteger.valueOf(1236))));
System.out.println (ISqrt.isqrt(BigInteger.valueOf (123456789).multiply(BigInteger.valueOf(123456789))));
}
}
Valeu pessoal =), tenho que pegar algum livro de Teoria dos Números para fazer certas coisas na mão.
Criado 16 de setembro de 2010
Ultima resposta 16 de set. de 2010
Respostas 3
Participantes 3
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Engenharia de Prompt para Devs: Um guia para aprender a... Por Ricardo Pupo Larguesa — Casa do Codigo