日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

n阶乘的c语言代码,求10000的阶乘(c语言代码实现)

發布時間:2025/7/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 n阶乘的c语言代码,求10000的阶乘(c语言代码实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

/*

程序功能:計算一個正整數n的階乘,目前最大能運算10000的階乘,可秒殺。

程序意義:加強自己對于大數的處理。

說明:此程序對乘法和除法還未做任何優化,如果用上位運算的知識應該可以繼續優化。 */ #include #define N 10000//宏定義數組長度 int main()

{

int nResult[N] = {0};//必須用一個足夠大的數組來存儲計算結果來確保計算結果不會溢出

int nDigit = 1; //位數

int nTemp = 0;//階乘的任一元素與臨時結果的某位的乘積結果

int i = 0;

int j = 0;

int nCarry = 0;//進位

int nNum = 0;

printf("Please input n:");

scanf("%d", &nNum);

nResult[0] = 1;//先將結果初始化為1

for (i = 2; i <= nNum; i++)//開始階乘,階乘元素從2開始一次“登場”

{

//按最基本的乘法運算思想來考慮,將臨時結果的每位與階乘元素相乘

for (j = 1, nCarry = 0; j <= nDigit; j++)

{

nTemp = nResult[j - 1]*i + nCarry;//相應階乘中的一項與當前所得臨時結果的某位相乘且加上進位

nResult[j - 1] = nTemp % 100000;//更新臨時結果的位上信息

nCarry = nTemp / 100000;//看是否有進位

}

while (nCarry)//判斷當前臨時結果的最高位是否有進位

{

nResult[nDigit++] = nCarry % 100000;//新增一位

nCarry /= 100000;//看是否還能繼續進位

}

}

for (i = nDigit; i >= 1; i--)//顯示結果

{

printf("%d", nResult[i - 1]); if (0 == nResult[i - 1])

{

printf("0000");//因為每個數組元素存儲5位數字,每次輸出項為0時需補上缺少的4個零

}

}

printf("\r\n");

return 0;

}

總結

以上是生活随笔為你收集整理的n阶乘的c语言代码,求10000的阶乘(c语言代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。