--- lang: ja tags: ICL_B_2022, lecture --- # 2022年度 情報基礎B 第09回<br>サイエンス・スキルI 計算機による問題解決の基礎(3): Python初級プログラミング(繰り返しと分岐) [ポータルへ戻る](https://hackmd.io/@nagae/ICL_B_2022) <div style="text-align: center"> このページへは以下のQRコードまたはURLからアクセスできます: ![](https://i.imgur.com/NNVMkeu.png =200x) <code style="font-size:20pt">https://hackmd.io/@nagae/ICL_B_2022-Ch09</code> </div> # 今回のやることリスト 1. ノートブック「Colabプログラム入門(2)」を実行しながら閲覧する 2. 課題4 「素数の個数と和」 # 1. ノートブック「Colabプログラム入門(2)」を実行しながら閲覧する 1. Classroom>授業>参考資料>Colabプログラム入門(2)にアクセス 2. Colaboratory で開いて順に実行してみる. # 2. 課題4 「素数の個数と和」 ## 課題の内容 ある整数`N`が与えられた時,`N`未満の素数の個数と和を求めて表示するプログラムを作り,下記の4つの整数を`N`として与えた場合の計算結果を示しなさい: `10, 100, 1000, 10000` 作成したプログラムは,動作が確認できるようにセルとして残すこと. 計算結果は,下記のようなテキスト・セルに整理すること. ```shell 10未満の素数 個数:x 和:xx 100未満の素数 個数:xx 和:xxx 1000未満の素数 個数:xxx 和:xxxx 10000未満の素数 個数:xxxx 和:xxxxx ``` なお,Nに`20, 200, 2000, 20000, 200000, 2000000, 20000000`を与えた場合の結果は以下の通り: ```shell N 素数の個数 素数の和 20 8 77 200 46 4227 2000 303 277050 20000 2262 21171191 200000 17984 1709600813 2000000 148933 142913828922 20000000 1270607 12272577818052 ``` ## 提出方法・提出期限 課題4に添付した Colab ノートブックのファイル名を 学籍番号_氏名-課題4.ipynb とした上で,内容を編集・保存し,**「提出」ボタン**を押す. <div style="font-weight:bold; color:red">締め切り:6月29日(水)23:59</div> ## 評価基準 ### 必須項目(守られていない場合は減点) - ファイル名,氏名,日付が適切に修正されているか. - 適切に動作するプログラムができているか. - 課題に提示されたケース(`N=10, 100, 1000, 10000`)について,正しい解を出力できるか. - 計算結果を整理したテキスト・セルがあるか. - 式や処理について十分なコメントが記載されているか.コメントは,プログラム・セル内にPythonのコメント(`#`以降に記載)として記述しても,テキストセルに記載してもよい. ### 加点要素(1): 技術の習得 - 素数判定などに**関数**を利用している - 講義で使っていない機能(リスト,`numpy`モジュールなど)の利用 - 十分なコメントが記載されている場合に限る ### 加点要素(2): 創意工夫 - 指定されていない数値についての実行結果を掲載している(ただし,多くても10個程度まで). - 効率化のための工夫をしている(講義中に紹介したものでも可). - 大きな数(例えば`N=10,000,000`)に対しても**高速**に計算するための工夫をしている(例えば,**Eratosthenesのふるい**をうまく使うと,`N=10,000,000`未満の素数の個数と和を30秒以内で求められる). - 自らの工夫によって処理時間がどれだけ減少したかを**定量的に評価**し,その根拠を考察している(考察はテキストセルに記述すること).