C語言計算大數階乘的方法

本文實例為大傢分享瞭C語言計算大數階乘的具體代碼,供大傢參考,具體內容如下

問題描述

輸入一個正整數n,輸出n!的值。
其中n!=1*2*3*…*n。

算法描述

n!可能很大,而計算機能表示的整數范圍有限,需要使用高精度計算的方法。使用一個數組A來表示一個大整數a,A[0]表示a的個位,A[1]表示a的十位,依次類推。
將a乘以一個整數k變為將數組A的每一個元素都乘以k,請註意處理相應的進位。

輸入格式

輸入包含一個正整數n,n<=1000。

輸出格式

輸出n!的準確值。

樣例輸入

10

樣例輸出

3628800

#include <stdio.h>
#define N 10000
int main()
{
 int a[N]={1};
 int k=0,l=1,n;
 int i,j;
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 {
  for(j=0;j<l;j++)
  {
   a[j]=a[j]*i+k;
   k=a[j]/10000;
   a[j]=a[j]%10000;
  }
  if(k)
  {
   a[j]=k;
   l++;
   k=0;
  }
 }
 printf("%d",a[l-1]);
 for(i=l-2;i>=0;i--)
  printf("%04d",a[i]);
 printf("\n");
 return 0;
}

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: