求c++达人 高精度乘法的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:05:38
代码应该怎么写,用数组实现如2000的阶乘之类的问题~

这个程序可以满足你的要求, 可以计算大数的阶乘:

#pragma hdrstop
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#define WAN 10000 //以10000为进制,进制越大,速度越快但同时算的数也越小;
#define ENDFLAG 999999 //结束标志
typedef unsigned int INTT ;

//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
cout<<"求任意正整数的阶乘";

do
{
cout<<endl<<"请输入一正整数:";
int num;
cin>>num;
int modulus=2; //内存分配系数,此处有待求精
if (num>=20000)modulus=4;
INTT *array=new INTT[num*modulus+3]; //动态分配存放结果的数组

int endbit=0; //记录数组的最高有效位位
array[0]=1;
array[1]=ENDFLAG;

for(;num>=1;num--)
{
INTT buff=0,carry=0;
int i=0;

do{
buff=array[i]*num+carry;
carry=buff/WAN;
array[i]=buff%WAN;
i++;