大数的阶乘 C语言

该程序实现了一个大数阶乘计算功能。通过数组存储大数,从低位到高位依次计算,处理进位问题。主程序测试了1、5和150的阶乘结果。核心函数fun()实现大数乘法,fun1()循环计算阶乘,printArr()输出结果。程序使用固定大小数组(102400位)存储计算结果,适用于大数运算,能正确输出1!、5!和150!的值。

cpp 复制代码
#include<stdio.h>
#define M  102400

int arr[M]={1};
int len =1;


void fun(int n){  //arr X n
	int f=0;//是否有进位 
	for(int i=0;i<len;i++){
		int tmp=n*arr[i]+f;
		arr[i]=tmp%10;
		f=tmp/10;
	}
	while(f){
		arr[len]=f%10;
		len++;
		f/=10;
	}	
}

void fun1(int n){
	for(int i=1;i<=n;i++)
		fun(i);
}

void printArr(){
	for(int i=0;i<len;i++){
		printf("%d",arr[len-i-1]);
	}
}

void test(int n){
	for(int i=0;i<M;i++){
		arr[i]=0;
	}
	arr[0]=1;
	fun1(n);
	printArr();
	puts("");
}

int main(){
	test(1);
	test(5);
	test(150);

	return 0;	
}
相关推荐
二哈赛车手4 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
吃好睡好便好5 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~5 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
YDS8295 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅5 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
未若君雅裁6 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
阿维的博客日记7 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
雨辰AI7 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
x_yeyue8 小时前
三角形数
笔记·算法·数论·组合数学