2W阶乘秒求

本文介绍了一种快速计算2万阶乘的方法,通过优化算法,实现了在短时间内准确计算大数阶乘的结果,对于数值计算和算法研究具有一定的参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>

int main()
{
	int digit,temp ,n,i,j;
	int a[20001];
	a[0]=1;
	digit=1;
	scanf("%d",&n);
	for (i = 2; i < n; ++i)
	{
		int num =0;
		for ( j = 0; j < digit; ++j)
		{
			temp =a[j]*i+num;
			a[j]=temp%10;
			num=temp/10;
		}
		while(num)
		{
			a[digit]=num%10;
			num=num/10;
			digit++;
		}
	}
	for (i=digit-1;i>=0; i--)
		{
			printf("%d",a[i]);

		}
	system("pause");
	return 0;
}


/*
	 1*2*3*4*5*6*7*8*9
	 char a[1000000];


	 */
	int num_len = 1;
	int a[1000000];
	a[1] = 1;
	int tmp = 0;
	int len = 9 + 1;//阶乘的长度9+1
	for (int i = 2; i < len + 1; ++i)//要求几次乘法
	{
		for (int j = 0; j <= num_len; ++j)//a有多少位就循环几次
		{
			tmp = i * a[num_len];//求i*a[]的结果
			if (tmp > 10)//如果tmp/
			{
				a[num_len] = tmp / 10;

				if (a[num_len] > 10)
				{
					a[num_len + 1] = a[num_len] / 10;
				}
			}
			tmp
		}

		if (a[num_len] > 10)
		{

		}


		/*
		 a[0]=1
		 i=2    2*1=2                             a[0]=2;
		 i=3    3*2=6                             a[0]=6;
		 i=4    4*6=24                           a[0]=4;a[1]=2;
		 i=5    5*24=120                       a[0]=0;a[1]=2;a[2]=1;
		 i=6    6*120=720                     a[0]=0;a[1]=2;a[2]=7;
		 i=7    7*720=5040                   a[0]=0;a[1]=4;a[2]=0;a[3]=0;
		 i=8    a[0]=2;
		 i=9    a[0]=2;
		 i=10    a[0]=2;
		 i=11    a[0]=2;
		 tmp/1>=1  tmp/1<10   个位
		 tmp/10>=1 tmp/10<10   十位
		 tmp/100>=1  tmp/100<10   百位
		 tmp/1000>=1  tmp/1000<10   千位
		 tmp/10000>=1 tmp/10000<10   万位
		 tmp/100000>=1  tmp/100000<10   十万位

		 */


		for (int j = 0; j < 10; ++j)
		{

		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值