在Python中生成小于n的素数列表

假设我们有一个数字n,我们必须生成一个所有升序小于或等于n的质数的列表。我们必须记住1不是质数。

因此,如果输入类似于12,则输出将为[2、3、5、7、11]。

为了解决这个问题,我们将遵循以下步骤-

  • 筛子:=大小为n + 1的列表,并用True填充

  • 素数:=一个新列表,最初为空白

  • 对于2到n范围内的i

    • 在素数末尾插入i

    • 对于范围i至n的j,在每一步中更新i,执行

    • 筛[j]:=假

    • 如果sieve [i]为True,则

    • 返回素数

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, n):
          sieve = [True] * (n + 1)
          primes = []
          for i in range(2, n + 1):
             if sieve[i]:
                primes.append(i)
                for j in range(i, n + 1, i):
                   sieve[j] = False
          return primes
    ob = Solution()print(ob.solve(12))

    输入值

    12

    输出结果

    [2, 3, 5, 7, 11]