mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-08-03 14:37:45 +00:00
factor::miller_rabin::is_prime: Fix bug
Montgomery only works for odd n, so attempting to construct an instance for an even number results in a panic! The most obvious solution is to special-case even numbers.
This commit is contained in:
parent
9b0f131135
commit
4cfe754551
1 changed files with 6 additions and 2 deletions
|
@ -84,11 +84,15 @@ pub(crate) fn test<A: Arithmetic>(m: A) -> Result {
|
||||||
Prime
|
Prime
|
||||||
}
|
}
|
||||||
|
|
||||||
// Used by build.rs' tests
|
// Used by build.rs' tests and debug assertions
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub(crate) fn is_prime(n: u64) -> bool {
|
pub(crate) fn is_prime(n: u64) -> bool {
|
||||||
|
if n % 2 == 0 {
|
||||||
|
n == 2
|
||||||
|
} else {
|
||||||
test::<Montgomery>(Montgomery::new(n)).is_prime()
|
test::<Montgomery>(Montgomery::new(n)).is_prime()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue