
{filelink=5520}
import java.math.BigInteger;
import java.util.ArrayList;
class CalculFactoriel {
protected static ArrayList table = new ArrayList();
static
{
table.add(BigInteger.valueOf(1));
}
public static synchronized BigInteger factorial(int nombre)
{
if (nombre < 0)
throw new IllegalArgumentException("le nombre doit être superieur à 0.");
for (int size = table.size(); size <= nombre; size++) {
BigInteger dernierFact = (BigInteger) table.get(size - 1);
BigInteger factSuivant = dernierFact.multiply(BigInteger.valueOf(size));
table.add(factSuivant);
}
return (BigInteger) table.get(nombre);
}
public static void main(String[] args) {
for (int i = 0; i <= 50; i++)
System.out.println(i + "! = " + factorial(i));
}
}