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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓

/*

程序功能:計(jì)算一個(gè)正整數(shù)n的階乘,目前最大能運(yùn)算10000的階乘,可秒殺。

程序意義:加強(qiáng)自己對于大數(shù)的處理。

說明:此程序?qū)Τ朔ê统ㄟ€未做任何優(yōu)化,如果用上位運(yùn)算的知識應(yīng)該可以繼續(xù)優(yōu)化。 */ #include #define N 10000//宏定義數(shù)組長度 int main()

{

int nResult[N] = {0};//必須用一個(gè)足夠大的數(shù)組來存儲計(jì)算結(jié)果來確保計(jì)算結(jié)果不會溢出

int nDigit = 1; //位數(shù)

int nTemp = 0;//階乘的任一元素與臨時(shí)結(jié)果的某位的乘積結(jié)果

int i = 0;

int j = 0;

int nCarry = 0;//進(jìn)位

int nNum = 0;

printf("Please input n:");

scanf("%d", &nNum);

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

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

{

//按最基本的乘法運(yùn)算思想來考慮,將臨時(shí)結(jié)果的每位與階乘元素相乘

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

{

nTemp = nResult[j - 1]*i + nCarry;//相應(yīng)階乘中的一項(xiàng)與當(dāng)前所得臨時(shí)結(jié)果的某位相乘且加上進(jìn)位

nResult[j - 1] = nTemp % 100000;//更新臨時(shí)結(jié)果的位上信息

nCarry = nTemp / 100000;//看是否有進(jìn)位

}

while (nCarry)//判斷當(dāng)前臨時(shí)結(jié)果的最高位是否有進(jìn)位

{

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

nCarry /= 100000;//看是否還能繼續(xù)進(jìn)位

}

}

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

{

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

{

printf("0000");//因?yàn)槊總€(gè)數(shù)組元素存儲5位數(shù)字,每次輸出項(xiàng)為0時(shí)需補(bǔ)上缺少的4個(gè)零

}

}

printf("\r\n");

return 0;

}

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。