2016-09-18 537 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)) –

相关问题