當前位置:
首頁 >
C语言之计算大数阶乘,如计算100!和1000!等~~~
發(fā)布時間:2025/5/22
34
豆豆
生活随笔
收集整理的這篇文章主要介紹了
C语言之计算大数阶乘,如计算100!和1000!等~~~
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一個正整數(shù)的階乘(英語:factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且定義0的階乘為1。自然數(shù)n的階乘寫作n!。即n!=1×2×3×…×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。
下面直接上源碼,如計算1000!:
#include <stdio.h>// result數(shù)組的最大長度 #define MAX_LEN 4096 // result數(shù)組,存放階乘結(jié)果 int result[MAX_LEN]; // result數(shù)組的有效長度 int len = 0;// factorial函數(shù)的功能是計算階乘,結(jié)果存在result數(shù)組中 // 返回值:成功為0,失敗為1 int factorial(int n) {int value = 0;// 初始化result數(shù)組及有效長度長度result[0] = 1;len = 1;for(int i=1; i<=n; i++){for(int j=len-1; j>=0; j--){value = i * result[j];result[j] = value % 10;value = value / 10;int k = j + 1;// 考慮進位,不增加result數(shù)組長度的情況while(value > 0 && k < len){value = value + result[k];result[k] = value % 10;value = value / 10;k++;}// 考慮進位,增加result數(shù)組長度的情況while(value > 0){result[len] = value % 10;value = value / 10;len++;if(len > MAX_LEN){return 1;}}}}return 0; }int main(void) {for(int i=0; i<=1000; i++){// 計算階乘int ret = factorial(i);// 計算失敗if(ret == 1){printf("Error! Tooooooo long!!\n");break;}// 打印階乘結(jié)果printf("%d! = ", i);for(int j=len-1; j>=0; j--)printf("%d", result[j]);printf("\n");}return 0; }來源:http://www.xieyincai.com/20180921703.html
總結(jié)
以上是生活随笔為你收集整理的C语言之计算大数阶乘,如计算100!和1000!等~~~的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业的书普遍都这么贵,Github
- 下一篇: OpenCV 4.2.0 发布,Inte