
#include <stdioh>
#define N 100 //计算10的阶乘,最多只能算到9999 long a[8916];int main(int argc, char argv[])
{
long n,i,c,len;
a[0]=1;
len=1;
for( n=N;n>1;n--)
{
for(c=0,i=0;i<len;i++)
{
long p=a[i]n+c;
a[i]=p%10000;
c=p/10000;
}
a[i]= c;
if(c>0)
{
len++;
}
} printf("%d",a[len-1]);
for(i=len-2;i>=0; i--)
{
printf("%04d",a[i]);
}
printf("\n");
return 0;
}
利用阶乘的定义求解阶乘
#include<stdioh>
void main()
{
int i,n;
long f=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
f=fi;
printf("%d!=%ld",n,f);
}
递归方法求阶乘
#include "stdioh"
long fact(int n)
{
long s;
if(n<=1)
s=1;
else
s=nfact(n-1);
return s;
}
void main()
{
int num;
scanf("%d",&num);
printf("%d!=%ld\n",num,fact(num));
}
常见的有两种:
递归版本:
int Fac(int n){if(n==0) return 1;
return nFac(n-1);
}
还有一种是循环版:
int ans=1;for(int i=1;i<=n;i++) ans=i;
测试方法:
#include<stdioh>int Fac(int n){
if(n==0) return 1;
return nFac(n-1);
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int ans=1;
for(int i=1;i<=n;i++) ans=i;
printf("%d %d\n",ans,Fac(n));
}
return 0;
}
有个值得注意的地方:阶乘时,数增大的很快,在n达到13时就会超过int的范围,此时可以用long long或是 __int64来存储更高精度的值,如果还想存储更高位的,需要用数组来模拟大数相乘。
所谓n的阶乘就是从1到n的累积,所以可以通过一个for循环,从1到n依次求积即可。
参考代码:
#include "stdioh"
int main() {
int n,i,s=1。
scanf("%d",&n)。
for(i=1;i<=n;i++)//for循环求累积。
s=si。
printf("%d\n",s)。
return 0。
注意事项:
1、任何大于1的自然数n阶乘表示方法:n!=1×2×3×……×n 或 n!=n×(n-1)。
2、n的双阶乘:当n为奇数时表示不大于n的所有奇数的乘积。
如:7!=1×3×5×7。
3、当n为偶数时表示不大于n的所有偶数的乘积。
如:8!=2×4×6×8。
4、小于0的整数-n 的阶乘表示:
(-n)!= 1 / (n+1)。
5、0的阶乘:0!=0。
6、组合数公式。
以上就是关于求编写一个求100的阶乘的程序。全部的内容,包括:求编写一个求100的阶乘的程序。、用C语言写程序:求N的阶乘。要求用到数组。、C语言中如何编程计算阶乘等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)