【確認課題】関数#

制御構文 確認課題』で実装したプログラムを関数を使用したプログラムに書き換えてください。

ただし、変更する際は新しいファイルを作成するのではなく、『制御構文 確認問題』で作成したファイルの内容を直接書き換えてください。 関数の仕様は以下の各問の指示に従ってください。

問 1. 素数判定#

提出ファイル: prime_number.py

項目

内容

引数

自然数 n

処理

n が素数か判定する

返り値

判定結果(bool 型)

エクストラ問題:3.14-1 が入力された場合は、適切なエラーを発生させて関数の実行を中断させてください。

問 2. 台形積分#

提出ファイル: trapezoidal_integral.py

項目

内容

引数

関数 f, 区間下限 a, 区間上限 b, 区間分割数 n
(ただし、a のデフォルト値を 0、b のデフォルト値を 1、n のデフォルト値を 100 にそれぞれ設定する)

処理

与えられた分割数 n の下で、関数 f を区間 [a, b] で台形積分する

返り値

積分値(float 型)

実装した関数を用いて、(1) ~ (3) の積分値を求めてみましょう。

(1) 関数 \(\sin x\) を区間 \([0, \pi/2]\) で台形積分してください。ただし、分割数は \(n=50\) です。
(2) 関数 \(\dfrac{4}{1+x^2}\) を 区間 \([0, 1]\) で台形積分してください。ただし、分割数は \(n=100\) です。
(3) 関数 \(\sqrt{\pi}\exp(-x^2)\) を 区間 \([-100,100]\) で台形積分してください。ただし、分割数は \(n=1000\) です。

問 3. ユークリッドの互除法#

提出ファイル: euclid.py

項目

内容

引数

自然数 a, 自然数 b

処理

ab の最大公約数を求める

返り値

最大公約数(int 型)

問 4. 互いに素#

提出ファイル: euclid.py

上の『問 3. ユークリッドの互除法』で実装した関数を 使用して、与えられた 2 つの自然数 ab が互いに素であるか判定する関数を実装してください。

項目

内容

引数

自然数 a, 自然数 b

処理

ab が互いに素か判定する

返り値

判定結果(bool 型)

ヒント:互いに素 ⇔ 最大公約数が 1

エクストラ問題:1 万以下の 2 つの自然数 (a, b) をランダムに 10 万組生成して、各組が互いに素である確率を求めよ。 \(6/\pi^2\) になるらしいです。