的筛我发现用Perl编写的关于埃拉托色尼的筛(一种算法来找到号码给定范围内的素数),下面的代码和它的工作很好,但我不明白它。有人可以为我评论它吗,所以我会更好地了解如何找到质数?需要帮助了解Perl代码实现埃拉托色尼
$max= 120;
@primes=();
@tested= (1);
$j= 1;
while ($j < $max) {
next if $tested[$j++];
push @primes, $j;
for ($k= $j; $k <= $max; $k+=$j) {
$tested[$k-1]= 1;
}
}
print "@primes\n";
一个关键的一点是,该算法很好地工作时'@ tested'被初始化为空数组或0代替1。即初始化,换句话说,一个红鲱鱼。它也奇怪地使用'$ tested [$ N] == 1'来记录'$ N + 1'已被测试的事实。 –