We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 7a0c8fc commit f5cd810Copy full SHA for f5cd810
src/Primes.jl
@@ -592,7 +592,7 @@ true
592
function ismersenneprime(M::Integer; check::Bool = true)
593
if check
594
d = ndigits(M, base=2)
595
- M >= 0 && isprime(d) && (M >> d == 0) ||
+ (M >= 0 && d == count_ones(M) && isprime(d)) ||
596
throw(ArgumentError("The argument given is not a valid Mersenne Number (`M = 2^p - 1`)."))
597
end
598
M < 7 && return M == 3
test/runtests.jl
@@ -262,6 +262,7 @@ end
262
@test ismersenneprime(8191)
263
@test_throws ArgumentError ismersenneprime(9)
264
@test_throws ArgumentError ismersenneprime(9, check=true)
265
+@test_throws ArgumentError ismersenneprime(17, check=true)
266
# test the following does not throw
267
ismersenneprime(9, check=false)
268
0 commit comments