您的位置:首页 > 其它

循环结构-阶乘之和

2016-02-17 14:36 399 查看
/*
阶乘之和:
输入n,计算s=1!+2!+3!+···+n!的末六位,n<=10^6
分析:
for(int i=1;i<n;i++)s+=i!
*/
#include<stdio.h>
int main(){
int i,j,n,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
int factorial=1;//累乘器
//计算i的阶乘
for(j=1;j<=i;j++)
factorial*=j;
s+=factorial;
}
printf("%d\n",s%1000000);
return 0;
}

注意:

1、累乘器的使用。

        2、当n=100时,会出现乘法溢出。

        3、当n非常大时,程序的运行时间会非常慢。

/*
阶乘之和:
输入n,计算s=1!+2!+3!+···+n!的末六位,n<=10^6
分析:
for(int i=1;i<n;i++)s+=i!

计时函数的使用
*/
#include<stdio.h>
#include<time.h>
int main(){
const int MOD=100000;//定义一个常量
int i,j,n,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
int factorial=1;//累乘器
//计算i的阶乘
for(j=1;j<=i;j++)
factorial=(factorial*j)%MOD;
s=(s+factorial)%MOD;
}
printf("%d\n",s%1000000);
printf("Time used=%.2lf\n",(double)clock()/CLOCKS_PER_SEC);//使用计时函数,输出程序的运行时间。
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法