• 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("
    ");
     } 

    希望对大家有所帮助!

  • 相关阅读:
    POJ 1129 深搜&四色染图&模拟
    POJ 1011 很经典的树枝拼凑的深度搜索
    HDU 2564 词组缩写
    Java中的split函数的用法
    java中next和nextline的区别
    简探this和super
    再探Java中的继承加载顺序
    Java面向接口编程小例子 2
    Dos命令整理集(持续更新)
    VMware WorkStation9.0虚拟机如何运行WINPE
  • 原文地址:https://www.cnblogs.com/aerer/p/9931130.html
Copyright © 2020-2023  润新知