と言うわけで今日は情報科学演習の試験がありました。
UNIXに関する4択問題が10問
プログラミングに関する4択問題が10問
情報通信に関する4択問題が10問
プログラム記述問題が2問
2点×30問+20点×2問=100点
って感じでした。
で、プログラム記述問題の2問目…
「100以下の素数をすべて出力するプログラムを作成せよ。プログラム言語の種類は問わないが、使用する言語を明記すること。」
という問題。
で、σ(・ω・*)が書いたプログラムが
#include <stdio.h>
int judge(int);
int main()
{
int i;
for(i=1; i<=100; i++)
{
if( judge(i) ) // judge(i)の値が真ならiを出力
printf( "%d¥n", i );
}
return 0;
}
int judge( int n ) // 引数が素数か否かを判定する関数
{
int i;
if( n==1 ) return 0;
if( n==2 ) return 1;
if( n%2 != 0 )
{
for(i=3; ; i=i+2)
{
if( n%i==0 )
break;
if( i*i > n) // 素数でない自然数nは必ず√n以下の素因数を持つ
return 1;
}
}
return 0;
}
とまぁ、こんなのを書いたわけですが…
テスト終了後に実際にこのプログラム組んで実行してみるまでミスに気付かなかった_| ̄|○
コンパイルして実行してみると
2 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
うん、上手くいって…ねぇぇぇぇぇ!!!
あからさまに3が表示されてない(死
break文に引っかかっちゃうのになんで気付かなかったんだろう(;´Д`)
まだまだ修行が足りませんね・゜・(ノ∀`)・゜・ |