我有以下问题,如标题所述:对于N的每个值,打印出N!中有多少个数字。例如,如果n = 32000,我应该得到130271. 我曾想过一个递归解决方案。它适用于较小的数字,但对于上面的例子,它打印31997.我相信我的想法是错误的,但我无法找到更大数字的规则。某处,n!我想,开始跳过步骤。我的意思是,它不会随着数字增加,而是会增加两到三个。 我有以下代码:对于N的每个值,打印N个因子中有多少个数字
#include <stdio.h>
#include <stdlib.h>
//For each value of N, print out how many digits are in N!.
int how_many(int n){
if(n <= 3)
return 1;
if(n == 4)
return 2;
if(n == 5 || n == 6)
return 3;
if(n >= 7)
return 1 + how_many(n-1);
}
int main()
{
int n;
printf("The number n is : ");
scanf("%d", &n);
int counter = 0;
counter = how_many(n);
printf("n! has %d digits", counter);
return 0;
}
或者你也可以使用标准库中的'lgamma'。 – rici