素数を求める (ver.5)

明解C言語 入門編 > 5. 配列 >

素数を求める (ver.5)

Perl
@prime   = ();
$ptr     = 0;
$counter = 0;

$prime[$ptr++] = 2;
$prime[$ptr++] = 3;

$no = 5;
while ($no <= 30)
{
    $j = 0;
    for ($i = 1; $counter++, $prime[$i] * $prime[$i] <= $no; $i++)
    {
        $counter++;
        if ($no % $prime[$i] == 0)
        {
            $j = 1;
            last; # 割り切れるので、素数ではない
        }
    }
    $prime[$ptr++] = $no unless ($j); # 最後まで割り切れなかったので、素数

    $no += 2;
}

foreach $p(@prime)
{
    print "$p\n";
}    

print "計算を行った回数:$counter\n";

実行結果

L:\>perl lesson_05_042.pl
2
3
5
7
11
13
17
19
23
29
計算を行った回数:34