【问题标题】:Find all the primes from 2 to n, using the Sieve of Eratosthenes [closed]使用埃拉托色尼筛法找到从 2 到 n 的所有素数 [关闭]
【发布时间】:2013-11-23 21:29:15
【问题描述】:

我想解决一个单词问题,但在关键部分卡住了。

将以下英文描述转换为 Python 代码。

n 初始化为 100。将 numbers 初始化为从 2n 的数字列表,但不包括 nresults 以空列表开头,只要 numbers 包含任何数字,就重复以下操作。

  • numbers中的第一个数字添加到results的末尾。

  • 删除 numbers 中可以被您刚刚添加到 results 的数字整除(除以没有余数)的每个数字。

多久出结果?

n为100时,results的长度为25。

到目前为止,我已经理解设置 n = 100range(2, 100)results = [] 并且结果将是 results.append(numbers[]) 中的追加情况,但我在确定“关键”时遇到了心理障碍删除 numbers 中可以被添加到结果中的数字整除的每个数字。

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

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

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

非常感谢你们的回答。

【问题讨论】:

  • 如果有帮助,看起来问题是要求您实现一个算法,使用埃拉托色尼筛法找到从 2 到 n 的所有素数。
  • 问题是什么?您是在问如何浏览数字列表或如何找出一个数字可以被另一个数字整除?
  • 为什么这是一个“单词”问题?
  • 请重新打开。我已经清楚地解释了我在我的问题中需要什么。

标签: python primes sieve-of-eratosthenes


【解决方案1】:
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)

【讨论】:

  • 亲爱的 Kyle,您能写出您解决方案的完整实现吗?我只是想弄清楚它是如何工作的。谢谢。
  • 感谢凯尔的帮助。我已经完成了你的帮助:codedef long_implementation(n): numbers = range(2,n) results = [] while len(numbers) > 0: results.append(numbers[0]) for number in numbers: if number % results[-1] == 0: # numbers.remove(number)
  • @Matvey 在results.append(numbers[0]) 之后,results[-1] 只是== numbers[0];还有,for number in numbers: if number % results[-1] == 0: numbers.remove(number)审判庭;但它与for number in range(numbers[0],100,numbers[0]): if number in numbers: numbers.remove(number)that 是 Eratosthenes 的筛子相同。
【解决方案2】:

以下内容:

将数字中的第一个数字添加到结果的末尾。

...不等于:

results.append(numbers[])

要访问列表中的第一个数字,您可以使用第一个索引。

因此:

numbers[0] ## would be the first "number" in numbers

进一步,执行以下操作:

但是我在想“删除所有 数字中的数字可以被添加到的数字整除 结果”。

...你需要一些方法来测试一个数字可以被什么整除,这意味着你需要使用模数:

some_number % some_other_number

如果没有余数,则取模结果为零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多