Python - Prime Number练习

时间:2011-04-06 13:04:09

标签: python

注意,这不是我的作业!我只是想同时理解Python(和数学,遗憾)。我知道这个程序的最终目标是获得1到20范围内的素数列表,但是,一旦它到达“for x in range ......”行,我就迷路了,教程没有不详细解释。

请您一步一步地用简单的英语解释并具体说明

a)行for x in range (2,n)

中的x是什么

b)在for x in range (2,n),n是什么?底部的“n”是否相同?

c)这n, x, n // x到底是什么意思。请澄清//

谢谢你能提供帮助

def isprime(n):
    if n == 1:
        print("1 is special")
        return False
    for x in range(2, n):
        if n % x == 0:
            print("{} equals {} x {}".format(n, x, n // x))
            return False
    else:
        print(n, "is a prime number")
        return True

for n in range(1, 20):
    isprime(n)

3 个答案:

答案 0 :(得分:7)

A)

for x in range (2,n)

相同
for (x = 2; x < n; x++)

在其他语言中:一个循环,其中x得到包含在2和n-1之间的整数值。

b)中

for x in range (2,n): 

这个n来自第一个def isprime(n),是随后调用此函数的任何内容。在这种情况下,它始终与底部的n相同。

c)中

print("{} equals {} x {}".format(n, x, n // x))

这写了以下文字:A equals B x C其中AnBxCn/x四舍五入到最接近的小整数。它被称为整数除法(例如9 // 2 = 4

答案 1 :(得分:3)

a)在提示符下尝试:

help(range)

它会告诉你范围(a,b)返回一个列表aarting为a,结束于b-1,所以

range(2,10)

[2, 3, 4, 5, 6, 7, 8, 9]

在提示符下播放,输入range(2,2)range(2,-1)range(2,3)并查看结果。你会发现n == 1不是唯一的特例。

现在,像for x in y这样的东西遍历y的元素,在你的情况下,它将是一个列表。您也可以在提示符下验证:

for x in range(2,10) :
    print x

b)以def isprime(n)开头的块是一个函数,参数为n。您可以为任何n:isprime(100)调用它。在代码的底部,您正在迭代range(1,20)(如果有疑问将其输入到提示中)并为每个值调用isprime,即1,2,3,4,...,19。

请注意,在此示例中,无需使用range创建和返回列表,您可以使用xrange这是一个生成器。在提示符中输入help(xrange)...

答案 2 :(得分:0)

a)x接受从2n-1的值(因为range排除了上限)

b)不,它与方法定义中的n相同(即方法参数)

c)整数除法