algorithm - 如何找到埃拉托色尼筛算法的循环不变量?
问题描述
谁能帮我制作 Eratosthenes 算法的循环不变量?
这是代码的和平:
算法 埃拉托色尼筛法 输入:一个整数 n > 1。 输出:从 2 到 n 的所有素数。
let A be an array of Boolean values, indexed by integers 2 to n,
initially all set to true.
for i = 2, 3, 4, ..., not exceeding √n do
if A[i] is true
for j = i2, i2+i, i2+2i, i2+3i, ..., not exceeding n do
A[j] := false
return all i such that A[i] is true.
解决方案
在第i
th 次迭代之后,A[x] = false
对于所有x <= n
是x
任何整数的倍数,j
使得2 <= j <= i
.
推荐阅读
- date - 在logstash中解析特定日期
- python - Twilio,收集挂起,在大提示下我可以停止收集,并发送部分结果
- python - ''AttributeError: module 'selenium.webdriver' has no attribute 'Chrome''' 我正在从终端运行文件
- javascript - 错误:已超过期限 - 调用 firebase 可调用云函数 (onCall) 时。onRequest 工作正常
- java - Java Stream映射到多个属性
- ios - Swift TableView 人口
- git - 在 git rebase 期间备份到以前的冲突
- sql - 定义与整个表的关系
- java - 如何在 UML 中对 DAO 建模
- css - 将排序箭头图标添加到表 Bootstrap 4