C ++计算大数,两位数或更多数的阶乘数
C++ count digit of factorial of a large digit, two digit number or more
Click Here to View CodeFunction to perform factorial of digit and count the number of digit of that factorial
当我给出“输入:13”时,此代码给出了所需的输出,但是当我使用“输入:大于此或 3 位数字的数字”时,它无法计算。我认为这是因为超出了 unsigned long long 可以容纳的值的数量。那么有什么解决办法我怎样才能找到一个大数字的阶乘数字。
///// user function code//////////////
unsigned long long int digitInFactorial(int N)
{
int count=0;
if(N==0) || (n==1)){
return 1;
}else{
int result=1;
for(int i=1;i<=N;i++){
result=result+1;}
while(result!=0)
{
result=result/10;
count=count+1;
}}
return count;
}
int digitsInFactorial(int N) {
if (N < 0)
return 0;
if (N <= 1)
return 1;
double digit=0;
for (int i = 1; i <= N; i++)
digit = digit + log10(i);
return floor(digit) + 1;
}
Click Here to View CodeFunction to perform factorial of digit and count the number of digit of that factorial
当我给出“输入:13”时,此代码给出了所需的输出,但是当我使用“输入:大于此或 3 位数字的数字”时,它无法计算。我认为这是因为超出了 unsigned long long 可以容纳的值的数量。那么有什么解决办法我怎样才能找到一个大数字的阶乘数字。
///// user function code//////////////
unsigned long long int digitInFactorial(int N)
{
int count=0;
if(N==0) || (n==1)){
return 1;
}else{
int result=1;
for(int i=1;i<=N;i++){
result=result+1;}
while(result!=0)
{
result=result/10;
count=count+1;
}}
return count;
}
int digitsInFactorial(int N) {
if (N < 0)
return 0;
if (N <= 1)
return 1;
double digit=0;
for (int i = 1; i <= N; i++)
digit = digit + log10(i);
return floor(digit) + 1;
}