python判斷一個數是否是2的幾次冪
判斷一個數是不是2的幾次冪,最簡單粗暴的做法就是直接迭代除以2,這裡有一個更好的方法,那就是採用位運算。
我們觀察下面屬於2的幾次冪的數的變化規律,用2進製表示。
十進位制 二進位制
0 0
2 10
4 100
8 1000
16 10000
我們會發現凡是2的幾次冪0除外,用二進位制表示第一位全是1,後面全是0。這個規律好像是這樣但是有什麼用呢,不要急,你再看一下比他小一個數的規律就懂了。
十進位制 二進位制1 01 3 011 7 0111 15 01111
發現比他小一個數全是第一位為0後面全為1,剛剛跟2的幾次冪對應的數相反,這時就可以用位運算中的與運算來解決了。
解決程式碼:
def judge(num): num = int(num) return True if num == 0 or num & (num - 1) == 0 else False
相關推薦
python判斷一個數是否是2的幾次冪
判斷一個數是不是2的幾次冪,最簡單粗暴的做法就是直接迭代除以2,這裡有一個更好的方法,那就是採用位運算。 我們觀察下面屬於2的幾次冪的數的變化規律,用2進製表示。 十進位制 二進位制 0 0 2 10 4
python 判斷一個數為?
class OS color bsp body dig ins pos 字符 1. 判斷一個變量是否數字(整數、浮點數)? 1 instance(‘a‘, (int, long, float)) 2 3 True 4 5 6 isinstance(‘a‘, (int
python判斷一個數是否是素數
import math def is_prime(num): for i in range(2,int(math.sqrt(num)+1)): if num%i == 0: return False return True prime = [] for i
C 判斷一個數裡有幾個相同的數字問題
問題: Write a program that reads an integer, and determines and prints how many digits in the integer are 7s #include<stdio.h> #include&l
python判斷一個數是不是完全平方數
思路: 完全平方數開根號後是一個整數,非完全平方數開根號的話是一個非整數開根號後取整,如果開根號後是整數的話就不會改變值的大小取整後再平方,如果值和之前一樣,說明是完全平方數import math def isSqr(n): a = int((math.sqrt(
[計蒜客] Python 判斷一個數是否能被另一個整數整除是一個挺簡單的問題
問題描述: 判斷一個數是否能被另一個整數整除是一個挺簡單的問題,一般一個模運算就可以搞定了,懶惰的曉萌還是不想自己做,於是找到你幫他寫程式碼,你就幫幫他吧。 輸入格式: 輸入包括兩個由空格分開的整數 MMM 和 N(1≤M,N≤500)N(1\leq M,
用Python判斷一個數是否為迴文數(或者回文字串)
所謂迴文數。就是正著讀和反著讀,都是一樣的。 例如: 數字:121、1331、22、都是迴文數。 1234 不是迴文數。 自然數中最小的迴文數是0,再就是1,2,3,4,5,6,7,8,9,
判斷一個數是否是2的整數次冪,python實現。
問題:判斷一個數是否是2的整數次冪? 分析一:判斷一個數是否是是2的整數次冪。方法和思路也很多,其中最簡單的就是,用這個數除以2用除的商再除以2,直到最後被除數為2,證明這個數是2的整數次冪。這種思路
2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。
2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。 示例 1: 輸入: 1 輸出: true 解釋: 20 = 1 示例 2: 輸入: 16 輸出: true 解釋: 24 = 16 示例 3:
java 判斷一個數是否是2的整數次冪
有一道演算法題是這樣的,求一個數是否是2的整數次冪。 剛開始我的演算法是這樣寫的: 讓這個數每次都除以2,然後再乘以2,看這兩個數是否相等,不相等就返回false。放在迴圈裡面讓它從頭除到尾。 publicboolean isPower(int number){
js實現每次程序發送一個數據 ,多次發送不一樣,5秒後繼續執行多次程序,判斷如果五秒後發送過來的數據和上次不一樣,少的刪除多的增加
增加 開始 後繼 tin key cli 監控 沒有 sop /*存儲設備ID*/var IDSNew = new Array();//判斷是否已經啟用服務var isopen = true;//需要放到接收設備數據處IDSNew[client.deviceId]=new
JS中,如何判斷一個數是不是小數?如果是小數,如何判斷它是幾位小數??
nts text else lin var length code 判斷 alt <script type="text/javascript"> var x = 4.23323;//測試的數字 var y = String(x).indexOf(
判斷一個數是否為2的N次方
在閱讀goim原始碼的時候, 在ring.go中看到這句程式碼: // 2^N if num&(num-1) != 0 { // ... } 原來這是判斷2的N次方。 然後總結了下, 判斷一個數n是否為2的N次方的辦法(要求n>0): 第一種:笨辦法
Python學習第一週 判斷一個數是否是阿姆斯特朗數
如果一個n位正整數等於這個正整數每一位數字n次方的和,如370 = 3^3+7^3+0^3,那麼則稱這個數為阿姆斯特朗數 方法一:最容易理解,這個方法是直接對字串進行處理,然後獲取每一位進行處理最後求和 程式的邏輯是首先判斷使用者輸入的內容是否為數字,如果不是會提醒使用者。如果為數字那麼首先
用python語言來判斷一個數是否是水仙花數?
#用python語言來判斷一個數是否是水仙花數? #水仙花數: # 1) 一個三位正整數 ( 即取值區間 [100,1000) ) # 2) 個位數字的立方+十位數字的立方+百位數字的立方=它本身 (即數字 abc = a**3 + b**3 + c**3) 程式碼: for
Python之判斷一個數是否為素數
import math def is_prime(number): # 判斷是否為素數 sqrt = int(math.sqrt(number)) for j in range(2, sqrt + 1): # 從2到number的算術平方根迭代 if in
面試:快速判斷一個數是否是2的冪次方,若是,並判斷出來是多少次方!
/********************************************************************** 將2的冪次方寫成二進位制形式後,很容易就會發現有一個特點: 二進位制中只有一個1,並且1後面跟了n個0; 因此問題可以轉化為判斷1後
關於如何判斷一個數是否是2的整數次方的問題
有這樣的一道題: 有一串奇怪數列如下:1 2 -3 4 -5 -6 -7 8 -9 ... 即從1-n,碰到2的次方倍則顯正,其他則是負數。(2的整次方包括:1,2,4,8,16,32,64,128,....) 現在給你一個n,求出,這個數列的和。 直接來判斷一個數是
python小練習5:如何判斷一個數能否被3整除
題:如何判斷一個數能否被3整除?(或者被其他任意一個數整除) 方法一:取餘 x = input("input an number:") if x % 3 == 0: print "%d 能被3整
快速判斷一個數能否被1、2、3、4、5、6、7、8、9、10、11、12、13、17、19、23等整除的規律
快速判斷一個數能否被1、2、3、4、5、6、7、8、9、10、11、12、13、17、19、23等整除的規律總結 (1) 1與0的特性: 1是任何整數的約數,即對於任何整數a,總有1|a. &nb