在我的书《C语言编程》(第四版)中,我的任务是实现Eratosthenes算法的筛子,如下所示:
显示1到n=150之间的所有素数
- 第一步:定义一个整数数组P.将所有元素PI设置为0,
- _
- 步骤2:将i设置为2.
- 步骤3:如果i>;n,则算法终止.
- 第四步:如果PI为0,则I是素数.
- 步骤5:对于j的所有正整数值,使得i×j≤n,
- _
我理解这个宽泛的概念,但很难理解算法中的步骤和每个步骤的目的.
Questions:个
-
在步骤1中,将所有元素p[i]设置为0的目的是什么?开始时数组元素不是需要从0到150吗?
-
在步骤4中,这是否意味着i的倍数得到的值为0,以及除0以外的任何其他值都将是质数?本质上,它会将i的所有倍数转换为0(合成),并保留所有质数?
-
第五步把我弄糊涂了,我不知道如何在这个问题上形成一个连贯的问题.像这样的下标像素是什么意思?此外,步骤4的逻辑没有意义,如果可能的话,我需要更多外行的东西.(只要提示一下就可以了,这样我就可以自己拿了)
仅供参考,我是一个初学者,学习计算机科学和编程的基础知识,所以不那么神秘的回答将被感激!上面的练习来自第6章:array.谢谢!
我还没有try 在代码,我需要了解的算法步骤首先.