加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数阶乘

发布时间:2020-12-14 03:40:42 所属栏目:大数据 来源:网络整理
导读:#include stdio.hint main() {int n; int a[9000]; //确保保存最终运算结果的数组足够大 int digit = 1; //位数 int temp; //阶乘的任一元素与临时结果的某位的乘积结果 int i,j,carry; //进位 printf("please in put n:n"); scanf("%d",n); a[0] = 1; //将
#include <stdio.h>

int main() 
{
	int n; 
	int a[9000]; //确保保存最终运算结果的数组足够大 
	int digit = 1; //位数 
	int temp;   //阶乘的任一元素与临时结果的某位的乘积结果 
	int i,j,carry; //进位 
	
	printf("please in put n:n"); 
	scanf("%d",&n); 
	a[0] = 1;   //将结果先初始化为1
	
	for(i = 2; i <= n; i++) 
	{ //开始阶乘,阶乘元素从2开始依次"登场" 
		//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘 
		for( j = 1,carry = 0; j <= digit; j++) 
		{ //carry:进位 
			temp = a[j-1] * i + carry; //相应阶乘中的一项与当前所得临时结果的某位//相乘(加上进位) 
			a[j-1] = temp % 10; //更新临时结果的位上信息 
			carry = temp / 10; //看是否有进位 
		}
		while(carry) 
		{    //如果有进位 
			a[++digit-1] = carry % 10; //新加一位,添加信息。位数增1 
			carry = carry/10; //看还能不能进位 
		}
	} 
	printf("n ! = ");    //显示结果 
	for(j = digit; j >=1;j--)
	{
		printf("%d",a[j-1]); 
	} 
	printf("n"); 
	return 0; 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读