zoukankan      html  css  js  c++  java
  • 精度计算——大数阶乘

    小练习,大数阶乘代码

    思想:

      运算结果放在long long类型的数组a中(如果放在字符串中还要进行字符串和数字的转换,容易出错),数组中每个数据都是一个四位数。

      阶乘顺序1*2*3*……*n(用i表示其中的一个数),每次的运算结果都存储在a中,每次运算的时候,把a中的每个数依次与i相乘。

    代码:

    #include <stdio.h>
    #include <math.h>
    
    int factorial(int n)
    {
        long long a[10000];//存储运算结果,运算过程中抱保证每个a是个四位数
        a[0] = 1;
        int m = 0, w, c; //w存储运算结果的位数,m记录存储运算结果的数组的下标,c保存运算结果中大于四位的部分,用于进位。
        for(int i = 1; i <= n; i++) //参加阶乘的数字,1*2*3*……*n
        {
            c = 0;
            for(int j = 0; j <= m; j++) //上一步运算结果数组中的每一个数
            {
                a[j] = a[j] * i + c;
                c = a[j] / 10000;
                a[j] = a[j] % 10000;
            }
            if(c > 0) {m++; a[m] = c;}
        }
    
        w = m*4 + log10(a[m]) + 1; //结果的位数
    
        for(int i = m; i >= 0; i--)//输出运算结果
            printf("%d", a[i]);
        return w;
    }
    int main()
    {
        factorial(10);
        return 0;
    }
  • 相关阅读:
    主页面
    EasyUI写的登录界面
    SpringMVC学习笔记二第一个小的程序
    springmvc学习笔记一框架的理解
    mybitis学习笔记
    cheng gong de daima
    JQuery中如何使用事件来出发Ajax
    按照用户名和角色查询用户liferay
    在liferay中如何使用Ajax的请求
    [奇葩说]
  • 原文地址:https://www.cnblogs.com/rain-1/p/6575070.html
Copyright © 2011-2022 走看看