带有while循环的Python3.x Prime Number List

时间:2017-12-04 13:24:55

标签: python python-3.x for-loop while-loop

def prime(upper):
    while upper >=2:
        for num in range(2, upper + 1):
            prime = True
            for i in range(2, num):
                if (num % i == 0):
                    prime = False
            if prime:
                print(num, end=",")
                if num == upper:   #I think there is a problem here
                   break
prime(7)

当达到7值时,如何停止此功能 PS:我想用while循环执行这些代码。 顺便说一句,如果你可以使这个代码没有for循环请为我做:) 我很感激你......

1 个答案:

答案 0 :(得分:0)

修改

我猜我之前的is_prime功能存在问题。这种方式更快,效果更好:(Source

def is_prime(n):
    """"pre-condition: n is a nonnegative integer
    post-condition: return True if n is prime and False otherwise."""
    if n < 2: 
         return False;
    if n % 2 == 0:             
         return n == 2  # return False
    k = 3
    while k*k <= n:
         if n % k == 0:
             return False
         k += 2
    return True

你应该使用这个功能。

编辑前:

我会使用here中的is_prime函数。你可以用另一种方式。

并且,我会建议您使用此代码:

def is_prime(Number):
    return 2 in [Number, 2**Number%Number]

def prime(upper):
    print([num for num in range(2, upper + 1) if is_prime(num)])

prime(7)

输出:

[2, 3, 5, 7]

但如果您坚持只使用while循环,则可以将prime函数修改为:

def prime(upper):
    num = 2
    while num <= upper:
        if is_prime(num):
            print(num, end = ",")
        num += 1

然后,输出将是:

2,3,5,7,