zoukankan      html  css  js  c++  java
  • C语言求大数的阶乘

    我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,该如何计算?

    当一个数很大时,利用平常的方法是求不出来它的阶乘的,因为数据超出了范围。因此我们要用数组来求一个大数的阶乘,用数组的每位表示结果的每个位数。话不多说,直接上代码

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	int i,j,n,temp,d=1,carry;//temp为阶乘元素与临时结果的乘积,carry是进位 ,d是位数 
    	int a[3000];//确保数组足够大 
    	scanf("%d",&n);//n的阶乘 
    	a[0]=1;//先初始化为1,方便后面运算 
    	for(i=2;i<=n;i++)//从2开始阶乘 ,每次循环计算i阶乘的结果 
    	{
    		for(j=1,carry=0;j<=d;j++)// 每次循环初始化进位的值 
    		{
    			temp=a[j-1]*i+carry;//相应阶乘中的一项与当前所得临时结果的某位相乘加上进位 
    			a[j-1]=temp%10;//更新临时结果的位上信息 
    			carry=temp/10;//如果有进位就进入下面的循环 
    		}
    		while(carry)     //如果有进位 
    		{   ++d;        //增加进位,位数加一
    	                a[d-1]=carry%10;   //给新的进位赋值 
    			carry=carry/10;    //看还可不可以再进位 
    		}
    	}
    	printf("n!=");
    	for(j=d-1;j>=0;j--)       //从高位向低位依次输出 
    	printf("%d",a[j]);
    	printf("
    ");
     } 

    希望对大家有所帮助!

  • 相关阅读:
    shell学习之杂项
    boot小知识
    记一个数组的问题
    lnmp安装exif扩展
    国内的Git比GitHub快
    重用思想,要有识别出好代码的眼睛,识别出腐朽代码的眼睛
    CSS3之超出隐藏
    如何测量设计图中图片的尺寸,像素
    Linux 软链接操作项目
    微信小程序申请。很蛋疼的流程。
  • 原文地址:https://www.cnblogs.com/aerer/p/9931130.html
Copyright © 2011-2022 走看看