N!末尾有多少个0?N!的二进制表示中最低位1的位置

1. N!末尾有多少个0?

等于看N!是10 的几次方,也就看N!中质因数2和5的个数。如果N!=(2^x) * (3^y) * (5^z) *..。,那0的个数就是M=min(x, z),很显然N!质因数中2出现的次数比5多(因为每隔2个数就出现一个质因数2,每隔5个数才出一个质因数5),于是M=z。所以N!末尾有多少个0取决于N!含有多少个质因数5,M=z=N/5+N/25+N/125+N/625+…,比如1024!的末尾有多少个0,

是5的倍数的数有: 1024 / 5 = 204个
是25的倍数的数有:1024 / 25 = 40个
是125的倍数的数有:1024 / 125 = 8个
是625的倍数的数有:1024 / 625 = 1个
所以1024! 中总共有204+40+8+1=253个因子5,也就是说1024! 末尾有253个0。

2. N!的二进制表示中最低位1的位置

对于一个数除以2, 相当于把这个数的二进制表示向右移一位(符号位不变)。所以如果N!=(2^x) * (3^y) * (5^z) *…的话,那把这个数的二进制表示向右移x位,最低位就会是1,所以最低位1的位置M=1+x=1+ N/2+N/4+N/8+….

Leave a comment