如何编写一个返回不能从2到n整除的数字的函数?

时间:2018-04-29 11:53:05

标签: python

所以我试图在python中编写这个程序,首先返回给定数字的素数,然后返回从2开始不可分割的所有数字。 所以例如n是被测试的数字,如果我prime(10)它应该返回{2, 3, 5, 7},我知道如何做到但我不确定如何打印出数字2到n的列表不能被集合中的任何素数整除。

1 个答案:

答案 0 :(得分:1)

使用Sieve of Eratosthenes方法

def printPrimesUpToN(n):
  isPrime = [True] * (n + 1)   # Values are prime unless eliminated later
  for num in range(2, n + 1):  # Loop over all values
      if isPrime[num]:         # If not yet eliminated, it's prime
          print num
          # Eliminate multiples of this prime
          for multiple in range(num, n + 1, num): isPrime[multiple] = False

printPrimesUpToN(100)

2
3
5
7
11
13
17
19
[...]

对于不能被另一组n的任何成员整除的s之前的数字,请使用类似的方法。消除<= n中每个元素的倍数s,并接受其余元素。