檢測乙個數能否被3整除 位運算

2021-07-11 15:10:13 字數 483 閱讀 4972

第乙個解決方案就是小學就學過的,如果乙個數的每個位相加之和能被3整除,則這個數就可以被3整除。例如612各位之和為9,則可以被3整除。但是這個解決方法並不高效,我們需要取得每一位,然後再乙個個相加。

觀察二進位制,我們可以找到乙個模式來判斷乙個數能否被3整除。如果所有的偶數字出現1的次數為 even_count, 奇數字出現1的次數為 odd_count,兩者只差如果是3的倍數,那麼這個數就是3倍數。

例如:23 (00…..0010111)  even_count=3, odd_count = 1.    3-1 不能被2整除,所以不是3的倍數。

#include#includeusing namespace std;

bool ismultipleof3(int n)

return (odd_num - even_num) % 3;

}int main()

return 0;

}

怎樣判斷乙個數能否被7整除

2010 10 18 17 07 30 分類 預設分類 標籤 字型大小大中小 訂閱 在掌握了能被2 3 5整除的數的特徵之後,判斷乙個數能否被4 6 8 9整除也就不成問題了,唯獨判斷乙個數能否被7整除有點麻煩。下面介紹幾種判斷乙個數能否被7整除的方法供老師們參考。這些方法各有所長,貴在熟練,不必求...

1046 判斷乙個數能否同時被3和5整除 題解

題目傳送門 時間限制 1000 ms 記憶體限制 65536 kb 提交數 19623 通過數 13048 判斷乙個數n 能否同時被3和5整除,如果能同時被3和5整除輸出yes,否則輸出no。輸入一行,包含乙個整數n。1,000,000 n 1,000,000 輸出一行,如果能同時被3和5整除輸出y...

用位運算求乙個數的絕對值

我們知道在我們對乙個數進行位運算的時候,是在這個數的補碼上進行的,對於補碼我們知道,正數的補碼是原碼,負數的補碼為原碼除了最高位的符號位,取反,然後加1。把補碼轉換成原碼的時候,正數還是原碼,負數時把補碼除了符號位取反然後加1 我們可以發現如果這時候連符號位也求反,然後加1,與以前不同的只是少了乙個...