Skip to content

IsMersennePrimeExponent ​

Tests whether 2^p - 1 is prime, by the Lucas-Lehmer test.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageMersennePrimeExponentQ✓
IsMersennePrimeExponent(p)True if p is prime and 2^p - 1 passes Lucas-Lehmer, False if p is not prime or fails it
Typed signatures
TypePackageApplies
(integer) -> booleancombinatoricsalways

Domain: Collections

Details
  • Runs Lucas-Lehmer directly (s0 = 4, s(i+1) = s(i)^2 - 2 mod 2^p - 1, prime iff s(p-2) = 0) rather than a table lookup -- exact, not a probable-prime test.
  • Capped at p <= 4423 (the 20th known Mersenne prime exponent, same bound number-theory's own MersennePrimeExponent table is complete to) -- past that, whether 2^p - 1 is prime is GIMPS-scale search, so the call stays unevaluated rather than running an arbitrarily expensive test.
  • A non-prime p (or p < 2) answers False outright, without running Lucas-Lehmer -- a composite exponent's Mersenne number always has a proper factor.

Examples

Basic #
live ↗
InIsMersennePrimeExponent(7)\mathrm{IsMersennePrimeExponent}(7)OutTrue\mathrm{True}

25−1=312^5 - 1 = 31 is prime

live ↗
InIsMersennePrimeExponent(5)\mathrm{IsMersennePrimeExponent}(5)OutTrue\mathrm{True}

A composite exponent never works: 28−1=255=3⋅5⋅172^8 - 1 = 255 = 3 \cdot 5 \cdot 17

live ↗
InIsMersennePrimeExponent(8)\mathrm{IsMersennePrimeExponent}(8)OutFalse\mathrm{False}
Scope #
live ↗
InIsMersennePrimeExponent(11)\mathrm{IsMersennePrimeExponent}(11)OutFalse\mathrm{False}
live ↗
InIsMersennePrimeExponent(9)\mathrm{IsMersennePrimeExponent}(9)OutFalse\mathrm{False}
live ↗
InIsMersennePrimeExponent(31)\mathrm{IsMersennePrimeExponent}(31)OutTrue\mathrm{True}

Negative integers are not exponents of Mersenne primes

live ↗
InIsMersennePrimeExponent(−5)\mathrm{IsMersennePrimeExponent}(-5)OutFalse\mathrm{False}
Applications #

289−12^{89} - 1 is a Mersenne prime, a large one

live ↗
InIsMersennePrimeExponent(89)\mathrm{IsMersennePrimeExponent}(89)OutTrue\mathrm{True}
Properties #

Even exponents above 22 fail since 22k−12^{2k} - 1 factors

live ↗
InIsMersennePrimeExponent(12)\mathrm{IsMersennePrimeExponent}(12)OutFalse\mathrm{False}

The only even exponent: 22−1=32^2 - 1 = 3

live ↗
InIsMersennePrimeExponent(2)\mathrm{IsMersennePrimeExponent}(2)OutTrue\mathrm{True}
Possible issues #

With an unknown argument the test stays unevaluated

live ↗
InIsMersennePrimeExponent(FullSimplify(x))\mathrm{IsMersennePrimeExponent}(\mathrm{FullSimplify}(x))OutIsMersennePrimeExponent(x)\mathrm{IsMersennePrimeExponent}(x)
Neat examples #

213−1=81912^{13} - 1 = 8191, a prime

live ↗
InIsMersennePrimeExponent(13)\mathrm{IsMersennePrimeExponent}(13)OutTrue\mathrm{True}
About
Examples12
Checked againstWolfram Language 12 agree
CrosswalkWolfram Language

See also: MersennePrimeExponent, IsPrime