溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在C語言中計(jì)算大數(shù)階乘

發(fā)布時(shí)間:2021-05-10 15:54:36 來源:億速云 閱讀:215 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)如何在C語言中計(jì)算大數(shù)階乘,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

C語言是什么

C語言是一門面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā),使用C語言可以以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。

問題描述

輸入一個(gè)正整數(shù)n,輸出n!的值。
其中n!=1*2*3*…*n。

算法描述

n!可能很大,而計(jì)算機(jī)能表示的整數(shù)范圍有限,需要使用高精度計(jì)算的方法。使用一個(gè)數(shù)組A來表示一個(gè)大整數(shù)a,A[0]表示a的個(gè)位,A[1]表示a的十位,依次類推。
將a乘以一個(gè)整數(shù)k變?yōu)閷?shù)組A的每一個(gè)元素都乘以k,請(qǐng)注意處理相應(yīng)的進(jìn)位。

輸入格式

輸入包含一個(gè)正整數(shù)n,n<=1000。

輸出格式

輸出n!的準(zhǔ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;
}

看完上述內(nèi)容,你們對(duì)如何在C語言中計(jì)算大數(shù)階乘有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI