基本的に "迅速な "解決策はなく、必要な時間は数の大きさに依存する。多くのプライマリティ・テスト・アルゴリズムが開発されているが、小さい数の場合は以下の単純なアルゴリズムで十分である。これはいくつかの高速チェックを行い、それでも結論が出ない場合は、可能性のあるすべての適切な除算を試す：

```
bool IsPrime(int n)
{
    if (n == 2 || n == 3)
        return true;

    if (n <= 1 || n % 2 == 0 || n % 3 == 0)
        return false;

    for (int i = 5; i * i <= n; i += 6)
    {
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
    }

    return true;
}
```

これは正しいが、大きな数には速くない。大きな数に対しては、より高速な方法を探すことができる。これらのアルゴリズムを高速化する一般的な方法は、ある境界までのすべての素数のリストを事前に計算して保存しておくことである。素数のみで割れば十分なので、割り算のテスト回数が減る。
Fundamentally there is no "quick" solution, the required time depends on the size of the number. Many primality test algorithms have been developed but for small numbers the below simple algorithm should be sufficient. It does some fast check and if those don't reach a conclusion, try every possibly suitable division:

bool IsPrime(int n)
{
    if (n == 2 || n == 3)
        return true;

    if (n <= 1 || n % 2 == 0 || n % 3 == 0)
        return false;

    for (int i = 5; i * i <= n; i += 6)
    {
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
    }

    return true;
}

This is correct but not quick for large numbers. For large numbers you could look for faster methods. A common way to speed up these algorithms is to pre-compute and store a list of all primes up to a certain bound. This reduced the number of division tests since dividing by only prime numbers is sufficient for the test.