求 S = 1! + 2! + 3! + ... + 20!。
public class FactorialSum {
public static void main(String[] args) {
long sum = 0;
long fact = 1;
for (int i = 1; i <= 20; i++) {
fact *= i; // i! = (i-1)! * i
sum += fact;
}
System.out.println("前20項階乘和: " + sum);
// 20! = 2432902008176640000 超過 long 範圍,實際建議用 BigInteger
}
}
import java.math.BigInteger;
public class BigFactorialSum {
public static void main(String[] args) {
BigInteger sum = BigInteger.ZERO;
BigInteger fact = BigInteger.ONE;
for (int i = 1; i <= 20; i++) {
fact = fact.multiply(BigInteger.valueOf(i));
sum = sum.add(fact);
}
System.out.println(sum);
// 2561327494111820313 (精確值)
}
}
20! 超過 Long.MAX_VALUE (9.22e18),**必須使用 BigInteger** 獲得精確結果