Pessoal,
Estou precisando calcular fatorial de números grandes.. Mais precisamente o último dígito menos significativo diferente de zero desse fatorial.
Ex:
fat 5 --> 120 --> ultimo digito diferente de 0 --> 2
Já fiz em C, mas com números grandes, tenho problemas. Entao estou tentando em java.
Uso a seguinte classe:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Fatorial 1000 --> "+fatorial("1000"));
}
static public BigInteger fatorial(String n) {
BigInteger um = new BigInteger("1");
BigInteger resultado = um;
BigInteger contador = um;
BigInteger limite = new BigInteger(n);
while( contador.compareTo(limite) <=0){
resultado = resultado.multiply(contador);
contador = contador.add(um);
}
return resultado;
}
}
Funciona ok, mas não está atendendo ao tempo q tenho para resolver o problema,
me disseram q é possível resolver este problema por log.
Alguem sabe algum caminho de resolver este problema de maneira mais rápida?
Valeu pessoal!