怎样用因子分解法计算1000的阶乘(Java)

摘要:②5*5=25、5*5*5=125、5*5*5*5=625的倍数也要算进去。因为25=5*5,会比5多贡献一个0,125=5*5*5可以贡献3个0,625=5*5*5*5可以贡献4个0;

原理:

①因子分解法,偶数和5的乘积会产生0,即2的倍数和5的倍数相乘,但是因为2的倍数多于5的倍数,所以只需要找出5的因子有多少个,末尾的0就有多少个;

②5*5=25、5*5*5=125、5*5*5*5=625的倍数也要算进去。因为25=5*5,会比5多贡献一个0,125=5*5*5可以贡献3个0,625=5*5*5*5可以贡献4个0;

③为什么不是25的倍数个数*2、125的倍数个数*3、625的倍数个数*4呢,因为25的倍数同时也是5的倍数,125的倍数同时也是5和25的倍数,以此类推。

代码如下:

public class CountTest {public static void main(String args) {int i = 1000 / 5; //5的倍数int j = 1000 / (5*5); //25的倍数int k = 1000 / (5*5*5); //125的倍数int z = 1000 / (5*5*5*5); //625的倍数int sum = (i+j+k+z); //5的倍数和System.out.println("1000的阶乘的末尾有"+sum+"个0");}}

来源:静静课堂

相关推荐