python - 使用 Eratosthenes 筛法找出从 2 到 n 的所有素数

标签 python primes sieve-of-eratosthenes

<分区>

我有一道应用题要解决,但卡在了关键部分。

Convert the following English description into Python code.

Initialize n to be 100. Initialize numbers to be a list of numbers from 2 to n, but not including n. With results starting as the empty list, repeat the following as long as numbers contains any numbers.

  • Add the first number in numbers to the end of results.

  • Remove every number in numbers that is evenly divisible by (has no remainder when divided by) the number that you had just added to results.

How long is result?

When n is 100, the length of results is 25.

到目前为止,我已经了解设置 n = 100range(2, 100)results = [] 并且结果将是 results.append(numbers[]) 中的附加情况,但我有一个心理障碍来计算“删除数字中可被数字整除的每个数字”添加到结果中”。

======几分钟后=======

正如 Michael0x2a 所说 - 当我必须使用 Eratosthenes 筛法实现找到从 2 到 n 的所有素数的算法时,这是一个问题。

我想我可以继续处理这个问题。

非常感谢你们的回答。

最佳答案

n = 100
numbers = range(2,100)
results = []
while len(numbers) > 0:
    results.append(numbers[0])
    numbers = [number for number in numbers if number % results[-1] != 0]
print len(results)

关于python - 使用 Eratosthenes 筛法找出从 2 到 n 的所有素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20168108/

相关文章:

python - 是否可以使用模型- View - Controller 架构制作一个 python 消息对话框?

javascript - 为什么这些筛子优化会破坏我的代码?

recursion - 埃拉托斯特尼筛法是动态规划的一个例子吗?

c++ - Sieve of Eratosthenes 算法的效率

java - 优化 sieve 的代码

python - 在pygame中创建一个圆周上有点的圆

python - 如何在不使用 try/except 的情况下检查字符串是否表示 int?

python - 计算每行中 numpy 数组中的真数?

计算最多 18 位的素数优化

java - 从数组中打印素数