C: 2008年12月アーカイブ
入り口、Hello Worldは随分前に作ったから、今回はスルー。
以前躓いた、2~n(0,1は素数ではないため除外)までの素数判定プログラムを製作してみた。
100までの数が素数であることは確認。
滑稽者氏にはcount?使えとか言われたけれど、何とか条件分岐のみで実現してみせた。力技感が抜けないのが傷だが、アルゴリズムらしいアルゴリズムを組めたから由としよう。
ところで、プログラムを組んでて気づいた事がある。
if文は、{}で囲む場合と、囲まない場合があり、前者の場合{~}までの内容を実行し、後者は次の一文(このプログラムの場合ならば15行目のifにより分岐する16行目のcontinue;と、17行目のifにより分岐する18行目のprintf("%d,", b);)を実行する。
俺は今まで、後者の場合も前者と同様に、一文以上を指定できるのかと勘違いしていたが、次の;までしか実行されないんですね、これが。
実はこのプログラム、意図した結果ではありません。
17行目のifの分岐に、19行目まで掛かると誤認してました。
実際に動けば、素数判定なぞ何のその、ただnまでの数を羅列するプログラムと成り果てる所でした。
もしそんな事になっていたら、また投げましたね、ええ。
しかし、結果はbreak;が旨い具合に動作してくれたお陰で完成したりしてます、正に棚から牡丹餅。
いや、記述した本人が言うのもなんだが、奇蹟ですね、ええ。
15行目とbreak;がいい感じにif( b % c == 0) break;の動作を演出してくれたお陰で完成に漕ぎ着けた? と思いたい。
取り合えず、第一回目はこんな所で終わりたい。
第二回目の題目は決まってないので隔日更新です。そもそも二回目があるかどうかも怪しいですがね。
