mpz_probab_prime_p and negative inputs

Torbjorn Granlund tg at gmplib.org
Mon Mar 3 22:08:42 UTC 2014


nisse at lysator.liu.se (Niels Möller) writes:

  It seems mpz_probably_prime_p considers negated primes to also be prime.
  E.g, for n == -29 it returns 2, meaning "definitely prime".
  Mathematically, I think -29 is usually considered neither prime, nor
  composite (its prime factorization is -1 * 29 and the "unit" factor -1
  kind-of doesn't count, since *if* we count it as a "real" factor, that
  breaks uniqueness of factorization: we get additional possible
  factorizations like -29 = (-1)^3 29, and 29 = (-1)^2 29.
  
In UFDs one disregards units, which is exactly what is done here.

  The behaviour is also a bit inconsistent with mpz_nextprime, which for
  input -29 returns the "standard" prime 2, not -23 which is the next
  larger number which is considered prime by mpz_probably_prime_p.
  
Oh, well.  Not sure if that's worth changing.

  The result of mpz_probably_prime_p for negative inputs is not
  clearly documented.
  
  Some options:
  
  1. Document current behaviour.
  
  2. Explicitly document that negative inputs are not allowed.
  
  3. Change mpz_probably_prime_p to consider all integers < 2 to be
     non-primes.
  
  I'd lean towards (3), but I don't know if anyone depends on the current
  behaviour.
  
I think the current behaviour makes sense, and people might reply on it,
so please don't change it.


Torbjörn
Please encrypt, key id 0xC8601622


More information about the gmp-devel mailing list