# isprime: Determine if number is (very probably) prime In gmp: Multiple Precision Arithmetic

## Description

Determine whether the number n is prime or not, with three possible answers:

2:

n is prime,

1:

n is probably prime (without beeing certain),

0:

n is composite.

## Usage

 `1` ```isprime(n, reps = 40) ```

## Arguments

 `n` integer number, to be tested. `reps` integer number of primality testing repeats.

## Details

This function does some trial divisions, then some Miller-Rabin probabilistic primary tests. `reps` controls how many such tests are done, 5 to 10 is already a resonable number. More will reduce the chances of a composite being returned as “probably prime”.

## Value

 `0` n is not prime `1` n is probably prime `2` n is prime

Antoine Lucas

## References

The GNU MP Library, see http://gmplib.org

`nextprime`, `factorize`.
Note that for “small” n, which means something like n < 10'000'000, non-probabilistic methods (such as `factorize()`) are fast enough. For example, `primes` in package sfsmisc.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26``` ```isprime(210) isprime(71) # All primes numbers from 1 to 100 t <- isprime(1:99) (1:99)[t > 0] table(isprime(1:10000))# 0 and 2 : surely prime or not prime primes <- function(n) { ## all primes <= n stopifnot(length(n) == 1, n <= 1e7) # be reasonable p <- c(2L, as.integer(seq(3, n, by=2))) p[isprime(p) > 0] } ## quite quickly, but for these small numbers ## still slower than e.g., sfsmisc::primes() system.time(p100k <- primes(100000)) ## The first couple of Mersenne primes: p.exp <- primes(1000) Mers <- as.bigz(2) ^ p.exp - 1 isp.M <- sapply(seq_along(Mers), function(i) isprime(Mers[i], reps=256)) cbind(p.exp, isp.M)[isp.M > 0,] Mers[isp.M > 0] ```