loops-e-arrays icon indicating copy to clipboard operation
loops-e-arrays copied to clipboard

Fatorial de 20, 20!

Open Holivan opened this issue 3 years ago • 4 comments

Até o 19 deu ok, mas quando coloquei o valor 20. O resultado foi negativo! o.ó'

20! = -2102132736

Holivan avatar Jan 11 '22 12:01 Holivan

Até o 19 deu ok, mas quando coloquei o valor 20. O resultado foi negativo! o.ó'

20! = -2102132736

Oi, amigo. Boa tarde, seguinte: O fatorial de 20 é um valor muito grande: 2.432.902.008.176.640.000 Como estamos trabalhando com variáveis do tipo int, não é suportado.

Segue o range de alguns tipos primitivos do java.

2022-01-11_14-58

Uma possível solução é transformar as variáveis de int -> double.

2022-01-11_14-59

cami-la avatar Jan 11 '22 17:01 cami-la

public class Ex6_Fatorial { public static void main(String[] args) { Scanner scan = new Scanner(System.in);

    System.out.println("Fatorial: ");
    int fatorial = scan.nextInt();

    int multiplicacao = 1;

    System.out.print(fatorial + "! = ");
    for(int i = fatorial ; i >= 1; i--) {
        multiplicacao = multiplicacao * i;
    }

    System.out.println(multiplicacao);

}

}

Holivan avatar Jan 12 '22 11:01 Holivan

Ahhh, entendi! É como se virasse o contador! Obrigado! ^^' Só pra constar... Não fui testando um por um até 20, eu coloquei 20 aleatoriamente e foi justamente no ponto da virada, pois quando eu tentei com o 19 deu certo. xD

Holivan avatar Jan 12 '22 11:01 Holivan

Ahhh, entendi! É como se virasse o contador! Obrigado!

^^'

Só pra constar... Não fui testando um por um até 20, eu coloquei 20 aleatoriamente e foi justamente no ponto da virada, pois quando eu tentei com o 19 deu certo. xD

Kkkkkk isso foi ótimo! Eu nunca tinha testado o fatorial de um número que o resultado não fosse suportado pelo tipo primitivo int.

Em caso de dúvidas, sigo à disposição! 😃

cami-la avatar Jan 12 '22 11:01 cami-la