プログラムをやってみよー (C).part1
入り口、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;の動作を演出してくれたお陰で完成に漕ぎ着けた? と思いたい。
取り合えず、第一回目はこんな所で終わりたい。
第二回目の題目は決まってないので隔日更新です。そもそも二回目があるかどうかも怪しいですがね。
※オマケ
入力した値の素数判定。
本文に書いた代物を手直ししただけの手抜き品(笑)
本文と同じく、0と1は力技、自然数以外の入力は想定外と、色々頭が痛くなる仕様だが気にしない。
トラックバック(0)
このブログ記事を参照しているブログ一覧: プログラムをやってみよー (C).part1
このブログ記事に対するトラックバックURL: http://delta50.net/mt/mt-tb.cgi/289

コメントする