首页 > 代码库 > nefu 118 n!后面有多少个0 算数基本定理,素数分解
nefu 118 n!后面有多少个0 算数基本定理,素数分解
n!后面有多少个0 | ||
| ||
description | ||
从输入中读取一个数n,求出n!中末尾0的个数。
| ||
input | ||
| ||
output | ||
| ||
sample_input | ||
| ||
sample_output | ||
|
考查的素数基本定理的性质,素数基本定理:每个大于1的正整数n都能被唯一地写成素数的乘积,在乘积中的素因子按照非降序排列,n=(p1^a1)*(p2^a2)*.....*(pk^ak).
n!的素因子分解中的素数p的幂为: [n/p]+[n/p^2]+[n/p^3]+.........
再看这个题,说n!后面有几个0,显然我们不能算出n!,所以我们得找特征。
对于任意一个正整数,若对其进行因式分解,那么其末尾的0必定可以分解成2*5,所以每一个0必然和一个5对应,但同时还需要有2才行。而对于n!,在因式分解中,因子2的个数要比因子5的个数多,所以如果存在一个因子5,那么它必然对应着n!末尾的一个0,那么本题就变为求n!的分解中因子5的个数,那么上面的公式就派的上用场了。
代码如下:
#include <stdio.h> #include <string.h> #include <math.h> int main() { int i,j,s,n; int cas,ans,t; scanf("%d",&cas); while(cas--) { scanf("%d",&n); s=5;ans=0;t=n/5; while(t!=0) { ans+=t; s*=5; t=n/s; } printf("%d\n",ans); } return 0; }
nefu 118 n!后面有多少个0 算数基本定理,素数分解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。