解答例:練習問題_3_11(素数list)
def prime_num(n_start, n_stop):
"""n_start から n_stop までの間の素数
引数 2以上の整数 n_start, n_stop (n_start <= n_stop)
戻り値 素数のlist
"""
if (isinstance(n_start, int) and isinstance(n_stop, int)
and (n_start >= 2) and (n_stop >= 2) and (n_start <= n_stop)):
results = []
for n in range(n_start, n_stop + 1):
for x in range(2, int(n**0.5)+1):
if n % x == 0:
break
else: # nが素数
results.append(n)
return results
else:
print('引数にはn_start ≦ n_stopとなる2以上の整数を使用してください')
return None
prime_num(30, 80)
[31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79]
この関数の結果の確認、特に大きい素数の確認は難しいと思われますが、2桁程度までの簡単に判定できる数字で素数がもれなく含まれているかどうかを確認するしかないかと思います。また、極端なケースとしてprime_num(2, 2)で [2] が出力されるかも確認して下さい。
for if break elseを使う上での注意点は、elseのインデント位置をforと同じ位置にすることです。これをifと同じにすると結果が間違ってしまうことをこの問題で是非確認してみて下さい。