Determine if number is (very probably) prime
Determine whether the number n is prime or not, with three possible answers:
n is prime,
n is probably prime (without beeing certain),
n is composite.
isprime(n, reps = 40)
n |
integer number, to be tested. |
reps |
integer number of primality testing repeats. |
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”.
0 |
n is not prime |
1 |
n is probably prime |
2 |
n is prime |
Antoine Lucas
The GNU MP Library, see https://gmplib.org
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]
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.