1. 程式人生 > >1000!的結果的結尾中有多少個0?

1000!的結果的結尾中有多少個0?

思路:

由於要求1000!,其結果不能夠用integer型別或者Long型別存在,所以不可能先將結果計算出來,在依次判斷結果中存在的0的個數。

這裡提供了另外一種思路,參考部落格(https://blog.csdn.net/sata1/article/details/29228661):

對1000!進行因式分解,假如有k個0,即10k,分解2k*5^k,由於1000!分解中2的個數多於5的個數,所以我們只要求出1000!分解中5出現的次數,就是末尾0的個數。
可知被1-1000中能被5整除的數,都至少能分解出一個5,甚至可分解出兩個5(例如:25,50,75…),三個5(例如:125,250,375,…),四個5(例如:625)
我們只要求出被5整除的數中5的個數,就可以了。

程式碼:

public class Test1 {
	public static void main(String[] args) {
		int count=getZero();
		System.out.println(count);
	}

	private static int getZero() {
		int sum=0;   //1000!中分解5的個數
		for(int i=5;i<=1000;i+=5){
			int num=i;  //當前被5整除的數
			while(num%5==0){
				num/=5;
				sum++;
				
			}
		}
		return sum;
		
	}
}

執行結果:
在這裡插入圖片描述