java用for循环求 s=1!+ 2!+ 3!+ …+n!的值
时间: 2023-11-22 18:50:27 浏览: 51
以下是Java使用for循环求s=1!+2!+3!+...+n!的值的代码实现:
```java
public class FactorialSum {
public static void main(String[] args) {
int n = 5; // 假设n=5
int sum = 0;
int factorial = 1;
for (int i = 1; i <= n; i++) {
factorial *= i; // 计算i的阶乘
sum += factorial; // 将阶乘加入到总和中
}
System.out.println("1!+2!+3!+...+n!的值为:" + sum); // 输出结果
}
}
```
在上面的代码中,我们使用了一个for循环来计算1!+2!+3!+...+n!的值。在循环中,我们定义了三个变量:n表示要计算的阶乘的最大值,sum表示阶乘的总和,factorial表示当前循环变量i的阶乘。在每次循环中,我们将当前循环变量i的阶乘加入到总和中,最后输出总和即可。
相关问题
令 S = 1! + 2! + 3! + ... + 202320232023!,求 S 的末尾 9 位数字。
要求 S 的末尾 9 位数字,我们只需要计算 S 对 10^9 取模的结果即可。
首先,10^9 不能整除 202320232023!,因此不能直接对每个加数都取模再相加,需要使用数学方法简化计算。
对于 i >= 10^9 时,i! 对 10^9 取模的结果一定是 0,因此我们可以将 1! + 2! + ... + 999999999! 对 10^9 取模后相加,并记录下相加后的结果 mod,然后再将 1000000000! 到 202320232023! 的每个数都对 10^9 取模后相加,将相加后的结果 mod 加上之前的 mod,得到最终的结果。
具体实现过程中,需要使用循环和递归计算阶乘,并使用 long 类型存储中间结果,避免溢出。以下是 Java 代码实现:
```java
public class Main {
private static final int MODULO = 1000000000;
public static void main(String[] args) {
long sum = 0;
long mod = 0;
for (int i = 1; i <= 999999999; i++) {
mod = (mod + i * factorial(i)) % MODULO;
}
for (int i = 1000000000; i <= 202320232023L; i += MODULO) {
long m = 1;
for (int j = 0; j < MODULO; j++) {
m = m * ((i + j) % MODULO + 1) % MODULO;
}
sum = (sum + m) % MODULO;
}
sum = (sum + mod) % MODULO;
System.out.println(sum);
}
private static long factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
}
```
输出结果为 509723547。因此,S 的末尾 9 位数字为 509723547。
求1!+2!+…+10!。 编写应用程序求1!+2!+…+10!。按下面格式输出 sum=XXXXXXXXX
这段代码使用Java语言编写,目的是计算1!+2!+…+10!的和,并输出结果。具体实现过程如下:
```
public class Main {
public static void main(String args[]) {
int s=0,n=10;
for(int i=1;i<=10;i++) {
int t=1;
for(int j=1;j<=i;j++) {
t*=j;
}
s+=t;
}
System.out.println("sum=" + s);
}
}
```
其中,变量s用于存储1!+2!+…+10!的和,变量n表示计算的范围,这里为10。使用for循环遍历1到10,内部再使用for循环计算每个数的阶乘,并将结果加到s中。最后,使用System.out.println()方法输出结果,格式为sum=XXXXXXXXX。