匿名用户
1级
-12-11 回答
/*给个求大数阶乘的自编程序你,
下面的自己看着办吧
10000!两三秒吧,如果不输出更快
而且计算出10000!之前需要计算出之前的2-9999的阶乘
所以针对你的问题只要一次就可以了*/
/*
2
(C)
Xuotoa
/
3
4
Filename
:
BigNumberFact.c
5
Compiler
:
Visual
C++
6.0
/
Visual
Studio
6
Description
:
Calculate
the
factory
of
big
number
7
Release
:
12/20/
1.0
8
*/
#include
#include
int
a[8000],
n,
i,
j,
carry,
temp,
digit
=
1;
int
Fact(int
n);
void
main()
{
/*FILE
*fp;
if((fp
=
fopen("fac_result.log","w"))
==
NULL)
{
printf("Cannot
open
this
file.\n");
exit(0);
}*/
printf("Please
input
n:
");
scanf("%d",&n);
printf("%d!
is:
\n",n);
Fact(n);
for(i
=
digit
-
1;
i
>=
0;
i--)
{
printf("%d",
a[i]);
//fprintf(fp,"%d",
a[i]);
}
printf("\n");
//fclose(fp);
}
int
Fact(int
n)
{
if(n
<
0)
{
printf("ERROR");
return
-1;
}
else
{
a[0]
=
1;
for(i
=
2;
i
<=
n;
i++)
{
for(j
=
1,
carry
=
0;
j
<=
digit;
j++)
{
temp
=
a[j
-
1]
*
i
+
carry;
a[j
-
1]
=
temp
%
10;
carry
=
temp
/
10;
}
while(carry)
{
a[++digit
-
1]
=
carry
%
10;
carry
/=
10;
}
}
return
0;
}
}