111,129
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication9
{
class Program
{
//大数计算。可以计算大于5000的阶乘。
static void Factorial(int n)
{
int[] a = new int[100000];//结果存放数组
int carry, tmp, digit;//进位,具体位乘积,位数
int i, j;
a[0] = 1;
digit = 1;
carry = 0;
for (i = 2; i <= n; i++)
{
for (j = 0; j < digit; j++)
{
tmp = a[j] * i + carry;
carry = tmp / 10;
a[j] = tmp % 10;
}
while (carry > 0)
{
digit++;
a[digit-1] = carry % 10;
carry = carry / 10;
}
}
Console.Write("{0}!结果为: ", n);
for (int k = digit - 1; k >= 0; k--)
{
Console.Write(a[k]);
}
Console.WriteLine();
}
static void Main(string[] args)
{
string ss;
ss=" ";
while(ss!="exit")
{
Console.WriteLine("请输入n阶乘整数:");
ss = Console.ReadLine();
if (ss=="exit")
{
return;
}
int n = Convert.ToInt32(ss);
Factorial(n);
}
Console.ReadKey();
}
}
}


