你在旧货市场上买了一大箱乱七八糟的电脑零件,然后开始把这些零件拼装起来,自己组装电脑。
你想测试不同零件组合的性能,于是决定写一个自己的基准测试程序,看看这些电脑表现如何。你选中了著名的“埃拉托斯特尼筛法”算法。这是一个古老的算法,却能把你电脑的性能压到极限。
你的任务是编写一个程序,实现埃拉托斯特尼筛法,找出所有小于或等于给定数字的质数。
质数是大于 1、且只能被 1 和它本身整除的数字。 例如,2、3、5、7、11 和 13 都是质数。 相比之下,6 _不是_质数,因为它不仅能被 1 和它本身整除,还能被 2 和 3 整除。
要使用埃拉托斯特尼筛法,首先创建一个数组,包含从 2 到给定数字之间的所有数字。 然后重复以下步骤:
不断重复这些步骤,直到遍历完数组中的每个数字。 最后,所有未标记的数字都是质数。
测试并不检查你是否实现了这个算法,只检查你是否得出了正确的质数数组。 要确认自己是否正确实现了筛法,一个不错的初步检查是:确认你没有使用除法或求余运算。
假设你要找出小于或等于 10 的质数。
你已经检查了所有数字,发现 2、3、5 和 7 仍然未标记,也就是说,它们就是小于或等于 10 的质数。
为了让你的提交的解答更易读,试着用重构工具把有意义的子操作提取出来,同时不用纠结于临时变量有没有起好名字。