昨年度のプログラミング入門 I の授業で12月18日の演習問題において素数から円周率を求めるプログラムを作りました.今回はそれを変形してモジュールを活用する方法にしてみましょう.
25から35の整数のどれか1つを乱数により発生させ,それを計算する項数とします.上図からわかるように,項数が5であれば素数11までの計算ということです.このとき,求められる素数一覧をリストとして返す作業をモジュールとし,必要な計算を行うプログラムを作成しましょう.なお,円周率の計算値は小数第5位までの表示とします.
提出には本体プログラムとモジュールの2つを出してもらいますが,モジュールの名前は必ず自分のログインアカウント b**** としてください.本体の中で必ずその名前で呼び出してください.
Student number: s236099 Calculation of pi to item 35, prime number 149: 3.13986 ------------------------ |
素数の一覧はこちらでも確認できます.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください. 指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください. |
解答例
# ############################# # # プログラミング入門II 宿題 2024.6.19 # 学生番号: s236099 # 氏名: 松江 花子 # # ############################# import random from math import * from b2399 import * print('Student number: s236099') print('') item = random.randint(25, 35) p_lst = prime(item) num = 1 for i in range(0, item): num *= p_lst[i] ** 2 / (p_lst[i] ** 2 - 1) print(f'Calculation of pi to item {item}, prime number {p_lst[item - 1]}: {sqrt(num * 6):.5f}') print('\n------------------------\n') |
def prime(n): pl = [] i = 2 while len(pl) <= n: for j in range(2, i): if i % j == 0: break; else: pl.append(i) i += 1 else: return pl | |
本体 | モジュール |