天天看點

求1000!結果末尾有多少個0

public static void main(String[] args) {
 /*1000的階乘已經是天文數字了,是以不可能計算出來,再看有多少個0*/
 /* 解題思路:兩個素數2、5,相乘即可得到10,我們可以認為,有多少組2、5,結尾就有多少個0 */
 /* 操作方法:操作1到1000中所有的數,看每個數能被2和5整除幾次,并分别統計,假設被2整除8次,被5整除12次,那我們可以認為有8組(2,5),即8個0*/


 //被2整除的次數之和
 int count2 = 0;
 //被5整除的次數之和
 int count5 = 0;


 //周遊所有的數
 for (int number = 1; number <= 1000; number ++) {
  int dynmicNumber = number;//該數的一個複制,用于不數的整除用
  while (dynmicNumber % 2 == 0) { //統計該數能被2整除多少次,但是并不單獨統計,而是統計到全局
   count2++;
   dynmicNumber /= 2;
  }
  while (dynmicNumber % 5 == 0) { //統計該數能被2整除多少次,但是并不單獨統計,而是統計到全局
   count5++;
   dynmicNumber /= 5;
  }
 }


 System.out.println("結尾0的個數為:" + Math.min(count2, count5));
 /* 素數是個科學計算中很重要的一個概念,素,可以了解為很單純的意思,比如:白素紙,白素貞,元素。素數也叫質數,質也可以了解為單純的意思吧,品質,物質,本質。
  * 素和質連起來就是素質,素質用來形容人的話,可以了解為:最基本的道德,最原始的人性,等等。
  * 素數就是最純淨的數,沒有任何其它成分的數,其它的數都可以說是由素數相乘出來的。 
  * 是以,了解好素數,對于數學和程式來說,有重要的意義。*/
}
           

繼續閱讀