求一個數的階乘中0的個數
阿新 • • 發佈:2018-11-17
求一個數的階乘中0的個數
連續幾天產出為負,再不寫點東西沒法交代了。。。
public class The_number_of_0_in_FactorialN { public static void main(String[] args) { int n=5; System.out.println(Number0(n)); System.out.println(Number1(n)); } //階乘中有多少0,如果N!=K*(10~m),K是一個不能被10整除的數,那麼m有多少個就有多少個0 //N!進行質因數分解N!=(2~x)*(3~y)*(5~z)···,由於只有2*5=10,所以可以看有多少對 //2和5,就有多少個0,M=min(x,z),而能被2整除的比能被5整除的多,M=z public static int Number0(int n) { int number=0,j=1,i; while(j<=n) { i=j; if(i%5==0) { i=i/5; number++; } j++; } return number; } //這種方法是直接計算5的數量,因為2是充足的,每隔5個,會有一個0,比如5,10,15,20,... // 每隔5X5,會多產生一個0,比如25,50,75,...(這裡的5只在上一種情況算了一個5,因此在這裡加上25=5*5上次只算了一個5) //每隔5X5X5又會多出一個0,和第二個同理 // ...然後就是每次查5啦 public static int Number1(int N) { int number=0; while(N>0){ number+=N/5; N/=5; } return number; } }