« 「すぐわかるPerl」3.8 ifとwhileの複合技 | トップページ | 「すぐわかるPerl」3.10 紹介しきれなかった制御文 »

2008年2月20日 (水)

「すぐわかるPerl」3.9 二重ループ

2~100の間にある素数の数を表示する。

#! c:\perl\bin\perl.exe
# prime100 -- 100以下の素数をリストアップする

$n = 2;

while ($n <=100){
$div = 2;
$prime = 1;

while($div <= ($n / 2)){
  if ($n % $div ==0){
   $prime = 0;
   last;
  }

  ++$div;
}

if($prime){
  print "$n\n";
}

++$n;
}

whileのなかにwhileを入れ子(ネスト)することで条件文を分岐させる。

・$nは調査対象の数であり、2から初めて100までカウントアップ
・$divは割る数であると同時に、内部のループのループ関数としても利用する。n/2までカウントアップ。

・$nが$divで割り切れたら($n % $div == 0)lastでループを抜ける
・ループを抜けた際、それが割り切れたからか、$divが$n/2を超えたからかを判定するため、$primeという変数を設定。
 primeが1だったら素数。primeが0だったら素数ではない。

|

« 「すぐわかるPerl」3.8 ifとwhileの複合技 | トップページ | 「すぐわかるPerl」3.10 紹介しきれなかった制御文 »

Perl」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/214806/40196104

この記事へのトラックバック一覧です: 「すぐわかるPerl」3.9 二重ループ:

« 「すぐわかるPerl」3.8 ifとwhileの複合技 | トップページ | 「すぐわかるPerl」3.10 紹介しきれなかった制御文 »