Hello,
Indeed, the definition given in the documentation of "is_prime" does not
coincide with what the method is doing.
The mathematical definition of prime *depends* on the ring. An element
of a ring is prime if the ideal it generates is prime. And the ideal (3)
is prime in ZZ but not in QQ. A less stupid example
sage: K = ZZ[I]
sage: K(3).is_prime()
True
sage: K(5).is_prime()
False
The Sage behavior of the function is_prime is perfectly coherent with
respect to this definition.
I would rather make a patch to modify the documentation and warns the
user about the difference between prime element in a ring and prime number.
Vincent
On 05/02/16 14:50, David Wong wrote:
prime_number = bignumber / 2
is_prime(prime_number) # -> False
prime_number = bignumber // 2
is_prime(prime_number) # -> True
prime_number = ZZ(bignumber / 2)
is_prime(prime_number) # -> True
I've spent a couple of days arguing with people about a number (not) being
a prime. Turns out it fails silently if you're in the wrong field.
I guess a fix would be to ZZ() the number first in the function is_prime.
If you guys agree I can submit a patch or something (never touched at
Sage's codebase and that would be a good opportunity)
David
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.