mとnの間の素数を見つける方法


方法1: 素朴な方法(Brute Force) この方法では、mからnまでの範囲の各数値に対して、その数値が素数かどうかを判定します。判定するために、2からその数値の平方根までの範囲のすべての数値で割り算を行い、割り切れるかどうかを確認します。もし割り切れる数値が存在しなければ、その数値は素数です。

import math
def is_prime(number):
    if number < 2:
        return False
    for i in range(2, int(math.sqrt(number)) + 1):
        if number % i == 0:
            return False
    return True
def find_primes_between(m, n):
    primes = []
    for num in range(m, n+1):
        if is_prime(num):
            primes.append(num)
    return primes
m = 10
n = 100
primes_between_mn = find_primes_between(m, n)
print(primes_between_mn)

方法2: エラトステネスの篩(Sieve of Eratosthenes) この方法では、最初に2からnまでのすべての数値を含んだリストを作成します。次に、2からnまでの数値を順番に選び、その数値の倍数をリストから削除していきます。最終的に残った数値が素数となります。

def sieve_of_eratosthenes(n):
    primes = []
    sieve = [True] * (n + 1)
    sieve[0] = sieve[1] = False
    for p in range(2, int(n0.5) + 1):
        if sieve[p]:
            for i in range(p * p, n + 1, p):
                sieve[i] = False
    for p in range(2, n + 1):
        if sieve[p]:
            primes.append(p)
    return primes
m = 10
n = 100
primes_between_mn = sieve_of_eratosthenes(n)
primes_between_mn = [prime for prime in primes_between_mn if prime >= m]
print(primes_between_mn)

これらの方法は、指定された範囲内の素数を見つけるための一般的な手法です。どちらの方法も正確で効率的ですが、エラトステネスの篩がより高速です。プログラミング言語によっては、素数を見つけるための組み込みの関数やライブラリも提供されている場合があります。