解答例_3_11

解答例:練習問題_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と同じにすると結果が間違ってしまうことをこの問題で是非確認してみて下さい。

タイトルとURLをコピーしました