n을 입력받고 1~n까지의 곱(팩토리얼)의뒤에서부터 처음 0이 아닌 숫자가 나올 때까지의 0의 개수를 구하는 문제인데어떤 수A에곱셈 후뒤에 0이하나 더생기려면 10을 곱해줘야 한다. 10은 2 X5이므로 1부터입력받은 n까지를 소인수 분해하여 2 X 5쌍이몇 개나오는지 구하면 0의 개수를알 수 있다.
1부터 n까지의 값을 소인수분해했을 때2와 5가몇 개나오는지를 구하여야 하는데 이는 n을 2나 5로 나누어보면알 수 있다. n을 100으로 생각하고 100 / 5 연산을 해보면 값은 20이나온다. 이는5 X 1, 5 X 2, 5 X 3, 5 X4……. 5X20까지가100보다 낮거나 같다는말이 된다.
25 X 3을 보면 5 X 5 X3과같다는 것을알 수 있다. 25 X 3 = 75 는 5 X 15이고 100 /5를수행했을 때5 X15의 5가 5의 개수로카운트된다. 15는 5 X 3이기 때문에하나의 5가더 있는데이를 카운트 하기 위하여 5 X5의25로 100 /25를하여서 값 4를얻을 수 있고이는 25X 1, 25 X 2, 25 X 3, 25 X 4 이 100보다 낮거나 같다는걸알 수 있다. 5 X 5 X 5는 125이고 이는 100보다 커지게 된다.그 말은1부터 100까지의 수를 소인수분해했을 때.5,5,5를포함하는 수가없다는 말이다. 즉 값은 (100 / 5) + (100 / 25) =24가 된다.
코드 7행을 보면 n을 기준으로 5로나눈 값,5*5 로나눈값* 5 * 5로나눈 값을반복하다가 5가 계속 곱해진 값이 n보다 작거나같을 때까지수행하는 코드인데이는 소인수분해했을 때5가몇 개 나오는지를구하게 된다. 2가몇 개나오는지 구하는 코드는 없는데 이유는 팩토리얼은 1부터 n까지의 수를 곱하는 것이고 1부터 n까지의 수중 절반가량은짝수일 것일 것이다. 짝수는 소인수분해했을 때2를 무조건포함하게 된다. 따라서 5의 개수가 2의 개수보다작을 수밖에 없고5의 개수를 세어주면 2X5쌍의수를구할 수 있다.