判斷一個整數是否是2整數次冪三種方法


#encode=utf-8
import time
print u"寫一個方法判斷一個數是否能被2整除"
def whole1(x):
    try:
        n=0
        x=int(x)
        if x<2:
            print u"{0}不是2".format(x)
        while x>1:
            if x%2!=0:
                print u"number不是2整次冪"
                return False
            x/=2.0
            n+=1
        print u"2的{0}次方".format(n)
        return True
    except Exception,e:
        print u"程序出現錯誤{0[:]}".format(e.message)
 
def whole2(x):
    try:
        x=int(x)
        result="{0:b}".format(x)
        if result.count("1")==1 and result[0]=="1":
            print u"{0}能被2整除".format(x)
        else:
            print u"{0}不能被2整除".format(x)
    except Exception,e:
        print u"程序出現錯誤{0[:]}".format(e.message)
 
def whole3(x):
    try:
        n=0
        x=int(x)
        if x<2:
            print u"{0}不是2".format(x)
        while x>1:
            if x%2!=0:
                print u"number不是2整次冪"
                return False
            x=x>>1
            n+=1
        print u"2的{0}次方".format(n)
        return True
    except Exception,e:
        print u"程序出現錯誤{0[:]}".format(e.message)
 
if __name__=="__main__":
    time1=time.time()
    number=raw_input("輸入一個整數: ".decode("utf-8").encode("gbk"))
    print "_"*20
    for i in range(1,4):
        print u"第{0}個程序執行結果: ".format(i)
        eval_r("whole{0}".format(i)+"(number)")
    print "_"*20
    print u"程序執行完耗時{0}".format(time.time()-time1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM