long long n = 0;
printf("请输入一个正整数\n");
scanf("%ld",&n);
long long k = 0 ,s = n;
while(s > 0){
s /= 5;
k +=s;
}
printf("%ld 的阶乘中,末尾有%ld个'0' \n",n,k);
解析:
- 标准(素因数)分解式
求正整数的标准分解式的过程叫做正整数的素因数分解。
任意整数n>1都可以唯一表示为:
n=(p1a1)*(p2a2)……(pk^ak) - 尾数0分解
尾数有几个0,就是说可以被几个 10 整除 ,也就是说可以被 几个2*5整除,因为每2个数,就能被2 整除,每5个数能被5整除,所以能被5整除的个数小于能被2整除的个数, 所以求出能被几个5 整除则可以成功求得能被几个10 整除.
使用到了阶乘的标准分解式中素因数的指数,
阶乘:
阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
1 - 1000 的阶乘:
http://blog.csdn.net/lzmtw/article/details/1344490
网友评论