C语言之计算大数阶乘,如计算100!和1000!等~~~
生活随笔
收集整理的這篇文章主要介紹了
C语言之计算大数阶乘,如计算100!和1000!等~~~
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個正整數的階乘(英語:factorial)是所有小于及等于該數的正整數的積,并且定義0的階乘為1。自然數n的階乘寫作n!。即n!=1×2×3×…×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。
下面直接上源碼,如計算1000!:
#include <stdio.h>// result數組的最大長度 #define MAX_LEN 4096 // result數組,存放階乘結果 int result[MAX_LEN]; // result數組的有效長度 int len = 0;// factorial函數的功能是計算階乘,結果存在result數組中 // 返回值:成功為0,失敗為1 int factorial(int n) {int value = 0;// 初始化result數組及有效長度長度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數組長度的情況while(value > 0 && k < len){value = value + result[k];result[k] = value % 10;value = value / 10;k++;}// 考慮進位,增加result數組長度的情況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;}// 打印階乘結果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
總結
以上是生活随笔為你收集整理的C语言之计算大数阶乘,如计算100!和1000!等~~~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业的书普遍都这么贵,Github
- 下一篇: OpenCV 4.2.0 发布,Inte