2016-09-18 48 views
1

我正在使用Sage。編寫一個輸入正整數n的函數,並返回可被17整除的n位正整數的數目。務必說明n = 1的情況。用輸入n = 1,2,5測試你的程序。編寫一個函數,輸入一個正整數n並返回可被17整除的n位正整數的數目

我的理解是,例如,如果我輸入n = 1,這意味着我需要檢查從0-9可以被17整除的所有數字。如果我輸入n = 2,這意味着我需要檢查0-99之間的所有數字,它可以被17整除。

我不會拿出一個計算n長度的通用公式,然後選取可被17整除的數字的正確範圍。

def positive(n): 
for n in range(0, 10**n): 
    if (n%17==0): 
     print n, 

與我上面的代碼工作,但它只是打印出來這是整除17.我不知道我將如何指望他們的數量,所以我想知道有多少號是整除17

+0

你不能只用'range(0,10 ** n)'嗎? –

回答

4

如何使用數論簡化問題,並使用

def positive(n): 
    return 10**n // 17 + 1 

我相信賢者使用插入符號,而不是雙星號冪,所以你可以改用

10^n // 17 + 1 

加一包括值0,這是當然整除17可以具有更長的版本檢查此的,

def positive(n): 
    return len([x for x in range(10**n) if x % 17 == 0]) 
+0

對於最後一個例子,方括號在2和3都需要 - 否則它將是一個生成器表達式,它不會有「len」,因此失敗...也是 - 您需要返回值... –

+0

@JonClements:我在看到您的評論之前更正了'return'問題,但感謝括號中的說明。我不使用python 2.x. –

+2

如果v%17 == 0)'which'll'll避免產生一個列表,你可以將它重寫爲'sum(1範圍內的v(10 ** n)) –

相關問題