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