双重循环及特殊流程语句

输出给定范围内[m,n]的所有素数。素数定义为:在大于1的自然数中,除了1和它本身以外不再有其他因数。

def is_prime(n):
    for i in range(2,n):
        if n % i == 0:
            return False
    return True

a=[2,19]
def pri_num():
    for i in range(int(a[0]),int(a[1])+1):
        if is_prime(i):
            print(i)


def is_prime(n):
    for i in range(2, n+1):
        if n % i == 0 and n != i:
            break
        return True


def pri_num(inputstr):
    a = inputstr.split(',')
    for i in range(int(a[0]), int(a[1]) + 1):
        if is_prime(i):
            print(i)


if __name__ == '__main__':
    pri_num(input("输入范围,英文逗号分隔: "))

简洁的代码如下:

>>> m,n = 10,100 #范围
>>> isPrime = lambda n:False if n<2 else not any(map(lambda i:not n%i,range(2,n)))
>>> print(*filter(isPrime, range(m,n+1)))
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
>>> m,n = 1,100
>>> print(*filter(isPrime, range(m,n+1)))
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97