2014-11-04 29 views
-2

這是我創建的用於查找2因子的最大功率的代碼。我不認爲這是100%正確的,因爲我始終得到2作爲答案。我需要一些幫助來解決這個問題。我在編程方面全新。找到2的最大力量?

我的代碼:

def largestPowerOfTwoThatIsAFactorOf(num): 

    factor = 2 

    while not(num > 0): 

     factor = factor + 1 

    return factor 


print(largestPowerOfTwoThatIsAFactorOf(4)) 
print(largestPowerOfTwoThatIsAFactorOf(15)) 
print(largestPowerOfTwoThatIsAFactorOf(120)) 

#For any odd integer, largest power of 2 that’s a factor is 1. 
+1

'while not(num> 0)'表示:「只要數字爲0或更小就運行循環」。這不會爲正數運行循環。對於0,它將執行一次循環,並使函數返回3.這不是兩個冪。在**將代碼盲目地嵌入到計算機中之前,您應該考慮**算法**。 – 2014-11-04 06:13:30

+0

不要從'factor = 2'開始 – hjpotter92 2014-11-04 06:14:08

+0

當你是一個完整的初學者時,很難,我盡我所能@TheParamagneticCroissant – 2014-11-04 13:18:54

回答

-2
def largestPowerOfTwoThatIsAFactorOf(num): 
    if num % 2 != 0: return 1 
    factor = 0 
    while num % 2 == 0: 
     num /= 2 
     factor += 1 
    return 2 ** factor 
    ## or return factor; as per your requirement 

您需要更新num內循環。此外,您可以通過檢查第一條語句中的輸入是否奇怪來優化代碼。

+0

'factor + = 1'不會返回2的冪。這是因素* = 2'。 – 2014-11-04 06:24:02

+0

@TheParamagneticCroissant http://codepad.org/lbMCNgSP它正在返回2的權力 – hjpotter92 2014-11-04 06:26:46

+0

我必須錯過一些東西,但自從3被認爲是兩個冪時? – 2014-11-04 06:27:29