简易版,啊呀呀,刚才写错了一个字母,这回对了。。。貌似楼上的楼上的算法更简易。。
#include
main()
{
int n,aa,x,y;
aa=0;
y=1;
printf("请输入整数n=:");
scanf("%d",&n);
for(x=1,i<=n,x++)
{
y=y*x;
aa=aa+y;
}
printf("整数n的阶乘=:%d",aa);
}
楼上是不是说结果变量要用长整型定义long aa
#include
int main(void)
{
int n = 6; /* 1! + 2! + 3! + 4! + 5! + 6! */
long sum = 0;
long fac = 1;
int i;
for (i=1; i<=n; i++) {
fac *= i; /* factorial */
sum += fac;
}
printf("%ld\n", sum);
return 0;
}
#include
#include
int jiecheng(int n)
{
long jiecheng=1;
int i=0;
for(int i=1;i<=n;i++)
{
jiecheng=jiecheng*i;
}
return jiecheng;
}
main()
{
long sum=0;
int i=1;
for(int i=0;i<=10;i++)
{
sum=sum+jiecheng(i);
}
printf("%d",sum);
getchar();
}
思路说一下:
jiecheng(n) 用来返回n的阶乘
main()中的for用来求n个数的阶乘的累积和。
不知道n的范围给出没有 ,如果n>20的话 楼上的是算不出来的。我给一个 n可以很大的。。
#include
#include
int a[50000];
int main()
{
int i,j,len,k,n,carry,temp;
//scanf("%d",&k);
//while(k--)
//{
scanf("%d",&n);
a[0]=1;len=1;
for(i=2; i<=n; i++)
{
carry=0;
for(j=0; j
temp=carry+i*a[j];
a[j]=temp%10;
carry=temp/10;
}
while(carry!=0)
{
a[len++]=carry%10;
carry=carry/10;
}
}
for(j=0; j
printf("\n");
//}
return 0;
}