בהינתן שאפשר להשתמש בייצוג בינארי של המספר, עוברים על המספר ובודקים שיש לו רק סיבית 1 ששווה ל-1 בעוד שהשאר שוות ל-0
יוני 2021
יש אלגוריתם שמבצע את זה בO(1) פעולות.
קודם כל, אם המספר אינו חיובי, הוא אינו חזקה של 2.
נעשה and בין n לn-1 (על הביטים). אם בערך שקיבלנו הוא 0 אז זו חזקה של 2. אחרת זו לא חזקה של 2.
זה עובד כי חזקות של 2 מכילות 1 וכל היתר אפסים. אז כשנחסיר אחד, האחד היחיד יהפוך ל0 וכל האפסים לפניו יהפכו ל1 אבל אינם רלוונטיים כי במספר המקורי היו שם אפסים.
מספר האפסים הוא המספר המינמלי של חלוקת ב-5 או ב-2 שמכפלה של שניהם היא שיוצרת את האפסים.
עבור מאה עצרת, ישנים 20 מספרים שמתחלקים ב-5 מתוכם (5,10,15..)
מתוכם 4 מספרים שמתחלקים ב-5 פעמיים (100,25,50,75)
ולכן סה"כ 24 ולכן ל100! יש 24 אפסים .
(עבור חלוקה ב-2 יש יותר כמובן ואמרנו שלוקחים את המינימום מבין שניהםוזה כי כל פעם שנכפול 2 ב-5 נקבל 10 וכמובן שמספר מינימלי של אחד האיברים הוא זה שיקבע את כמות האפסים)