Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C / C ++ เพื่อนับเลขศูนย์ต่อท้ายในแฟกทอเรียลของตัวเลขหรือไม่


ที่นี่เราจะมาดูวิธีการคำนวณจำนวน 0 ต่อท้ายสำหรับผลลัพธ์ของแฟคทอเรียลของจำนวนใดๆ ดังนั้นถ้า n =5 แล้ว 5! =120 มี 0 ต่อท้ายเพียงตัวเดียว สำหรับ 20! มันจะเป็นศูนย์ 4 ตัวเท่ากับ 20! =2432902008176640000

วิธีที่ง่ายที่สุดคือการคำนวณแฟคทอเรียลและนับ 0 แต่วิธีนี้ใช้ไม่ได้ผลสำหรับค่า n จำนวนมาก ดังนั้นเราจะปฏิบัติตามแนวทางอื่น เลขศูนย์ต่อท้ายจะอยู่ที่นั่น หากตัวประกอบเฉพาะคือ 2 และ 5 หากเรานับ 2s และ 5s เราก็จะได้ผลลัพธ์ เราจะปฏิบัติตามกฎนี้

ต่อท้าย 0s =การนับ 5s ในตัวประกอบเฉพาะของแฟคทอเรียล(n)

โปรแกรม C / C ++ เพื่อนับเลขศูนย์ต่อท้ายในแฟกทอเรียลของตัวเลขหรือไม่

อัลกอริทึม

countTrailingZeros(n)

begin
   count := 0
   for i := 5, (n/i) >= 1, increase i := i * 5, do
      count := count + (n / i)
   done
   return count;
end

ตัวอย่าง

#include <iostream>
#include <cmath>
#define MAX 20
using namespace std;
int countTrailingZeros(int n) {
   int count = 0;
   for (int i = 5; n / i >= 1; i *= 5)
      count += n / i;
   return count;
}
main() {
   int n = 20;
   cout << "Number of trailing zeros: " << countTrailingZeros(n);
}

ผลลัพธ์

Number of trailing zeros: 4