คำอธิบาย
Trailing zeros ของ n! คือจำนวนศูนย์ติดต่อกันด้านขวาสุดของค่าแฟกทอเรียล หาได้จากการนับตัวประกอบ 5 (เพราะ 2×5=10 และตัวประกอบ 2 มีมากกว่า 5 เสมอ)
ตัวอย่าง
- 4! = 24 → 0 trailing zeros
- 5! = 120 → 1 trailing zero
- 6! = 720 → 1 trailing zero
อัลกอริทึม
จำนวนศูนย์ท้าย = n/5 + n/25 + n/125 + ... (หาร 5 ซ้ำจนผลหารเป็น 0)
โค้ดตัวอย่าง
#include <stdio.h>
static int trailing_Zeroes(int n) {
int count = 0;
while (n > 0) {
count += n / 5;
n /= 5;
}
return count;
}
int main() {
int n;
printf("Enter integer: ");
scanf("%d", &n);
printf("Trailing zeros of %d! = %d\n", n, trailing_Zeroes(n));
return 0;
}
ผลลัพธ์
Enter integer: 5 Trailing zeros of 5! = 1 Enter integer: 6 Trailing zeros of 6! = 1