効率的な素数検出

Beginner

This tutorial is from open-source community. Access the source code

はじめに

数学において、素数とは 1 より大きい自然数であって、2 つの小さな自然数の積ではない数のことを指します。たとえば、5 は素数です。なぜなら、5 を積として書く唯一の方法は 1×5 または 5×1 であり、これらの場合には 5 自身が含まれるからです。一方、4 は素数ではありません。なぜなら、4 は 2×2 という積であり、この場合の両数は 4 より小さいからです。このチャレンジでは、与えられた数が素数かどうかをチェックする Python 関数を書く必要があります。

数が素数であるかどうか

整数 n を入力として受け取り、その数が素数であれば True を返し、そうでなければ False を返す Python 関数 is_prime(n) を書きます。この問題を解くには、次のルールに従う必要があります。

  • 数が 0、1、負の数または 2 の倍数の場合、False を返します。
  • all()range() を使って、3 から与えられた数の平方根までの数をチェックします。
  • もしどの数も与えられた数を割り切らなければ True を返し、そうでなければ False を返します。
from math import sqrt

def is_prime(n):
  if n <= 1 or (n % 2 == 0 and n > 2):
    return False
  return all(n % i for i in range(3, int(sqrt(n)) + 1, 2))
is_prime(11) ## True

まとめ

このチャレンジでは、Python を使って与えられた数が素数かどうかをチェックする方法を学びました。all() 関数と range() 関数を使って、3 から与えられた数の平方根までの数をチェックしました。また、もしどの数も与えられた数を割り切らなければ True を返し、そうでなければ False を返す方法も学びました。