eu estava fazendo uma questão sobre fatorial e questão me pediu me pediu que eu tentasse numeros de 1-20, 1-30 e 1-40 (avisando que daria erro de calculo na compilação) e me pediu pra mudar de int pra long, SÓ QUE, somente o 1-20 foi corrigido, mas quando tentei 1-30 e 1-40, deu o mesmo erro de calculo com numeros negativos, como corrigir?
public class sintaxe5 {
public static void main(String[]args){
long fatorial = 1;
for(long n = 1; n <= 40; n++){
fatorial = fatorial * n;
System.out.println("fatorial de “+n+”! é igual a " + fatorial);
}
}
}
Compilação:
run:
fat de 1! é 1
fat de 2! é 2
fat de 3! é 6
fat de 4! é 24
fat de 5! é 120
fat de 6! é 720
fat de 7! é 5040
fat de 8! é 40320
fat de 9! é 362880
fat de 10! é 3628800
fat de 11! é 39916800
fat de 12! é 479001600
fat de 13! é [telefone removido]
fat de 14! é [telefone removido]
fat de 15! é 1307674368000
fat de 16! é 20922789888000
fat de 17! é 355687428096000
fat de 18! é 6402373705728000
fat de 19! é 121645100408832000
fat de 20! é 2432902008176640000
fat de 21! é -4249290049419214848
fat de 22! é -1250660718674968576
fat de 23! é 8128291617894825984
fat de 24! é -7835185981329244160
fat de 25! é 7034535277573963776
fat de 26! é -1569523520172457984
fat de 27! é -5483646897237262336
fat de 28! é -5968160532966932480
fat de 29! é -7055958792655077376
fat de 30! é -8764578968847253504
fat de 31! é 4999213071378415616
fat de 32! é -6045878379276664832
fat de 33! é 3400198294675128320
fat de 34! é 4926277576697053184
fat de 35! é 6399018521010896896
fat de 36! é 9003737871877668864
fat de 37! é 1096907932701818880
fat de 38! é 4789013295250014208
fat de 39! é 2304077777655037952
fat de 40! é -70609262346240000