110 likes | 185 Views
情報技術 ~プログラミング演習(提出課題)~. 2013 年 7 月 11 日 笠井俊信. 今後の予定. 7 月 25 日 試験 最初に試験当日の形式や流れなどについて説明します. 来週の 予定. 7 月 25 日 試験(5305) 座席は自由,ただし隣りの席は空けること 10 時 30 分開始(途中入室はOK) 持ち込みは不可 途中退室は可 30 分から 1 時間程度でしょう 授業評価アンケートもこの時間内に記述. 試験の内容について. 範囲は授業で扱った資料の中に含まれる 記憶だけを問うような問題はなく,理解を問う問題が中心となる 記述・選択問題が中心
E N D
情報技術~プログラミング演習(提出課題)~情報技術~プログラミング演習(提出課題)~ 2013年7月11日 笠井俊信
今後の予定 • 7月25日 試験 • 最初に試験当日の形式や流れなどについて説明します
来週の予定 • 7月25日 試験(5305) • 座席は自由,ただし隣りの席は空けること • 10時30分開始(途中入室はOK) • 持ち込みは不可 • 途中退室は可 • 30分から1時間程度でしょう • 授業評価アンケートもこの時間内に記述
試験の内容について • 範囲は授業で扱った資料の中に含まれる • 記憶だけを問うような問題はなく,理解を問う問題が中心となる • 記述・選択問題が中心 • 演習問題を参考にしましょう • Cプログラムを書く(穴埋めも含む)問題はない • 試験は50点満点
1000以下の素数をすべて求める • もっとも単純な方法 • 2から1000までの整数 i を対象とする • 2から i-1 までの数で割り切れるか? • 割り切れる数が見つかれば素数ではない
データ構造(方法の1つ) 配列 num[1001];
もっとも単純な方法のアルゴリズム • 1~Nまでの変数列(num[i])を用意 • すべてを1に初期化 • num[1] = 0 • i(調べる対象)が3~Nまで繰り返す • j(約数を探す)を2~i-1まで繰り返す • i ÷ j の余り(i % j)が0? ---> i % j == 0 • 真:num[i] = 0 • j を1増やす • i を1増やす • 1~Nまでのnum[i]が1である i が素数 約数が見つかったので j の繰り返しはやめる---> break;
もっとも単純な方法のプログラム例 for(i=1; i<=1000; i++){ if(num[i]==1){ printf("%d ", i); } } int num[1001], i, j; for(i=1; i<=1000; i++){ num[i]=1; } num[1]=0; for(i=3; i<=1000; i++){ for(j=2; j<i; j++){ if(i%j==0){ num[i]=0; break; } } }
1000以下の素数をすべて求める • もっとも単純な方法 • 2から1000までの整数 i を対象とする • 2から i-1 までの数で割り切れるか? • 割り切れる数が見つかれば素数ではない • 少し工夫した方法 • 2から1000までの整数 i を対象とする • 奇数のみ対象とする • 2から i の平方根(i^(1/2))までの数で割り切れるか? • 割り切れる数が見つかれば素数ではない
素数を求める有名な解法 • エラトステネスのふるい • もっとも小さい素数2から順に,その倍数を削除する。 (num[i] = 1 の i の倍数) • 2の倍数を削除,3の倍数を削除,5の倍数を削除 • 7の倍数を削除・・・ • 1000の平方根まで調べる
今日の課題 • 「少し工夫した方法のアルゴリズム」のCプログラムを作成する • 「エラトステネスのふるい」のCプログラムを作成する • Cプログラムができない部分は日本語でのアルゴリズムを記述してもOK • メールに添付して提出(できたところまで) • 11時50分まで • ededtech@s.okayama-u.ac.jp