1到20阶乘的和用c语言表达
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1到20阶乘的和用c语言表达相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
long jiecheng(int x)
long int i,k=1;
for(i=1;i<=x;i++)
k=k*i;
return k;
int main()
long int j,k=0;
int i;
for(i=1;i<=20;i++)
j=jiecheng(i);
k+=j;
printf("%ld\\n",k);
扩展资料:
使用其他方法实现求1到20阶乘的和:
public class Main
public static void main(String[] args)
int i,j;
int sum=0;
int a=1;
for(i=1;i<=20;i++)
for(j=1;j<=i;j++)
a*=j;
sum+=a;
System.out.print("sum=1!+2!+3!+...+20!="+sum);
参考技术A一、算法分析:
计算阶乘和分成两步:
1 计算阶乘。 对于n的阶乘,从1累乘到n即可。
2 每个阶乘相加。
于是算法可以设计为,从1到20循环,计算每个数的阶乘,并累加。
由于n!=(n-1)! *n, 所以每次计算阶乘,可以利用上次的结果,减少运算量。
二、代码实现:
#include <stdio.h>int main()
long long fac=1, s=0;//fac用来存储阶乘,s用来存储阶乘和。
int i;
for(i = 1; i <= 20; i ++)//循环20次
fac*=i;//计算阶乘
s+=fac;//累加
printf("%lld\\n", s);//输出结果
return 0;
三、输出结果:
2561327494111820313
四、注意事项:
1 由于20阶乘和很大,达到2.56*10^18,所以32位的int是存储不下的。 必须使用64位的long long。 否则会出现溢出现象。
2 如果是VC/VS一类的IDE,会不支持long long, 需要修改类型为__int64。
参考技术B #include<stdio.h>int jiecheng(int n);
int main(void)
int sum = 0;
for (int i = 1; i <= 20; i++)
sum+=jiecheng(i);
printf("%d\n", sum);
return 0;
int jiecheng(int n)
int k = 1;
for (int i = 1; i <= n; i++)
k = k*i;
return k;
参考技术C 少了一个循环好吧,误人子弟
C语言,算1到20阶乘的和
s*=i相当于s=s*i,假如某一次循环中i=k(k代表某个自然数),s=S那么执行完s*=i后s=S*k;下一次循环时i=k+1,执行完s*=i后s=S*k*(k+1)。而初始情况是i=1,s=1,根据数学归纳法可以推导出s中保存的值是1*2*...*(k+1)。 参考技术A for(i=1;i<=20;i++)m=fac(i);
sum+=m;
这里改成
for(i=1;i<=20;i++)
m=fac(i);
sum+=m;
//应该是你的for循环的范围搞错了
以上是关于1到20阶乘的和用c语言表达的主要内容,如果未能解决你的问题,请参考以下文章