zoukankan      html  css  js  c++  java
  • 大数阶乘(c++实现)

    #include <iostream>
    using namespace std;
    #define N 1000
    int BigNumFactorial(int Num[], int n);
    void Print(int Num[], int Index, int n);
    int main(void)
    {
        int n;
        int Num [N] = {1, 0};          //将第一位的数字初始化为1, 其余的都初始化为0
        cout << "你需要计算哪个数字的阶乘?" << endl;
        cin >> n;
        int Index = BigNumFactorial(Num, n);
        Print(Num, Index, n);
        return 0;
    }
    int BigNumFactorial(int Num[], int n)      //大数阶乘
    {
        int i, j, sum = 1, temp;
        int Index = 0;              //用于表示数组中的有效位置数
        for(i = 2; i <= n; i++)
        {
            temp = 0;
            for(j = 0; j <= Index; j++)
            {
                sum = i * Num[j] + temp;
                if(sum / 10 != 0)       //说明sum不止一位数
                {
                    Num[j] = sum % 10;
                    temp = sum / 10;        //所谓的‘进位’
                }
                else
                {
                    Num[j] = sum;
                    temp = 0;
                }
            }
            if(temp != 0)       //如果‘进位’还没有为0
            {
                Index = j - 1;
                while(temp)
                {
                    Index++;
                    Num[Index] = temp % 10;
                    temp /= 10;
                }
            }
        }
        return Index;
    }
    void Print(int Num[], int Index, int n)
    {
        int i;
        cout << n << "阶的结果为: ";
        for(i = Index; i >= 0; i--)
        {
            cout << Num[i];
        }
        cout << endl;
    }

  • 相关阅读:
    xml配置文件使用-读取、转换
    .NET 4.0 缓存
    jQuery分页插件pagination.js 笔记
    Spring源码
    Shell编程(字符串篇)
    Linux DNS 相关
    Shell将命令执行结果写入文件
    Linux安装GCC
    Linux网络安全
    产品经理基础
  • 原文地址:https://www.cnblogs.com/ReturnOfTheKing/p/11228042.html
Copyright © 2011-2022 走看看