欢迎访问 生活随笔!

生活随笔

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

编程问答

C语言之计算大数阶乘,如计算100!和1000!等~~~

发布时间:2025/5/22 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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!等~~~的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。