---
lang: ja
tags: ICL_B_2024, lecture
---
# 2024年度 情報とデータの基礎 第08回<br>サイエンス・スキルI 計算機による問題解決の基礎(3): Python初級プログラミング(繰り返しと分岐)
[ポータルへ戻る](https://hackmd.io/@nagae/ICL_B_2024)
# 今回のやることリスト
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月19日(水)23:59</div>
## 評価基準
### 必須項目(守られていない場合は減点)
- ファイル名,氏名,日付が適切に修正されているか.
- 適切に動作するプログラムができているか.
- 課題に提示されたケース(`N=10, 100, 1000, 10000`)について,正しい解を出力できるか.
- 計算結果を整理したテキスト・セルがあるか.
- 式や処理について十分なコメントが記載されているか.コメントは,プログラム・セル内にPythonのコメント(`#`以降に記載)として記述しても,テキストセルに記載してもよい.
### 加点要素(1): 技術の習得
- 素数判定などに**関数**を利用している
- 講義で使っていない機能(リスト,`numpy`モジュールなど)の利用
- 十分なコメントが記載されている場合に限る
### 加点要素(2): 創意工夫
- 指定されていない数値についての実行結果を掲載している(ただし,多くても10個程度まで).
- 効率化のための工夫をしている(講義中に紹介したものでも可).
- 大きな数(例えば`N=10,000,000`)に対しても**高速**に計算するための工夫をしている(例えば,**Eratosthenesのふるい**をうまく使うと,`N=10,000,000`未満の素数の個数と和を30秒以内で求められる).
- 自らの工夫によって処理時間がどれだけ減少したかを**定量的に評価**し,その根拠を考察している(考察はテキストセルに記述すること).