把每一步的结果分解成单个数字存入数组。没有使用BigInteger。
public static void main(String[] args) {
int N=100;
int [] rt=new int[1000];
rt[0]=1;
int len=1,i;
int c=0;
for(i=2;i<=N;i++){
for(int j=0;j<len;j++){
int tmp=rt[j]*i+c;
rt[j]=tmp%10;
c=tmp/10;
}
while(c!=0) {
rt[len++]=c%10;
c/=10;
}
}
for(int j=len-1;j>=0;j--){
System.out.print(rt[j]);
}
// System.out.println();
}
下面是利用BigInteger的解法:
public int sum =1 ;
public BigInteger biSum = new BigInteger("1");
public static void main(String[] args) {
Factorial100 test = new Factorial100();
test.calBigInt(100);
System.out.println(test.sum);
System.out.println(test.biSum);
}
public int calInt(int num){
for(int i=num; i>0; i--){
sum *= i;
}
return sum;
}
public String calBigInt(int num){
for(int i=num; i>0; i--){
biSum = biSum.multiply(BigInteger.valueOf(i));
}
return biSum.toString();
}