描述
给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+…+n!)
输入
输入有一行,包含一个正整数n(1 < n < 12)。
输出
输出有一行:阶乘的和。
样例输入
5
样例输出
153
解法一:(利用for循环)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int sum=0;//阶乘的和;
int a=1;//a=n!,数的阶乘值
for(int i=1;i<=n;i++) {
for(int j=1;j<=i;j++) {
a=a*j;
}
sum=sum+a;
a=1;//由于下一个阶乘数值也是从a=1开始的
}
System.out.println(sum);
}
}
解法二:(利用BigInteger)用于n!值很大的情况
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
BigInteger a=new BigInteger("1");
BigInteger c=new BigInteger("0");
for(int i=1;i<=n;i++) {
for(int j=1;j<=i;j++){//求n!
String b=String.valueOf(j);
a=a.multiply(new BigInteger(b));//multiply是BigInteger用于乘法;
}
c=c.add(a);//add是BigInteger用于加法
a=new BigInteger("1");//将a的值重新定义为1(由于阶乘都是从1开始)
}
System.out.println(c);
}
}