C语言求阶乘倒数之和
#include<stdio.h>
#if 0
double fun(int a)
{
int i,j;
double m,S=1.0;
for(i=2;i<=a;i++)
{
m=1.0;
for(j=1;j<=i;j++)//--变++不变也可
{
m*=j;//改了一下
}
S+=1.0/m;
}
return S;
}
#endif
//优化了一下
double fun(int a)
{
int i,j;
double m=1.0,S=1.0;
for(i=1;i<=a;i++)//从0算起,从1算起的话改回:for(i=2;i<=a;i++)
{
m*=i; // 求阶乘
S+=1.0/m;//倒数相加
}
return S;
}
main()
{
int n,sum;
scanf("%d",&n);
sum=fun(n);
printf("%d\n",sum);
c语言求1到50的阶乘和
1. 求1到50的阶乘和2. 阶乘是指一个数与小于它的所有正整数的乘积。
求1到50的阶乘和,需要将每个数的阶乘计算出来,然后将它们相加。
3. 首先,计算1到50的每个数的阶乘。
然后,将这些阶乘相加即可得到1到50的阶乘和。
这个过程可以通过使用循环结构来实现,从1到50遍历每个数,计算它的阶乘并累加到总和中。
最后,输出得到的阶乘和即可。
以下是使用C语言编写的求解1到50的阶乘和的程序:
c
#include <stdio.h>
int main() {
int i, factorial, sum = 0;
for (i = 1; i <= 50; i++) {
factorial = 1;
for (int j = 1; j <= i; j++) {
factorial *= j;
}
sum += factorial;
}
printf("The sum of factorials from 1 to 50 is: %d\n", sum);
return 0;
}
该程序使用了嵌套的for循环来计算1到50的阶乘,并将结果累加到一个变量中,最后输出结果。外层循环从1到50循环,内层循环计算当前数的阶乘,并将其累加到sum变量中。最终输出结果为1到50的阶乘和。
最基础的思路,是逐个求阶乘,并累加。不过由于阶乘是从1乘到n,所以每个数都单独求一次阶乘,会有很多重复运算,影响效率。 所以更快捷的方式是,在上一个数的阶乘基础上,直接乘上本身,得到当前数的阶乘。 以此为主导,代码如下: #include int main() { int n, i, n1 = 1,s=0; scanf("%d",&n);//输入n值。 for(i=1; i <= n; i ++) { n1*=i;//计算i的阶乘。 s+=n1;//累加。 } printf("%d\n", s);//输出结果。 }