Skip to content

Commit f5cd810

Browse files
authored
fix ismersene check (#164)
* fix ismersene check * add test
1 parent 7a0c8fc commit f5cd810

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

src/Primes.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ true
592592
function ismersenneprime(M::Integer; check::Bool = true)
593593
if check
594594
d = ndigits(M, base=2)
595-
M >= 0 && isprime(d) && (M >> d == 0) ||
595+
(M >= 0 && d == count_ones(M) && isprime(d)) ||
596596
throw(ArgumentError("The argument given is not a valid Mersenne Number (`M = 2^p - 1`)."))
597597
end
598598
M < 7 && return M == 3

test/runtests.jl

+1
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ end
262262
@test ismersenneprime(8191)
263263
@test_throws ArgumentError ismersenneprime(9)
264264
@test_throws ArgumentError ismersenneprime(9, check=true)
265+
@test_throws ArgumentError ismersenneprime(17, check=true)
265266
# test the following does not throw
266267
ismersenneprime(9, check=false)
267268

0 commit comments

Comments
 (0)