123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- from sympy.assumptions import Predicate
- from sympy.multipledispatch import Dispatcher
- class PrimePredicate(Predicate):
- """
- Prime number predicate.
- Explanation
- ===========
- ``ask(Q.prime(x))`` is true iff ``x`` is a natural number greater
- than 1 that has no positive divisors other than ``1`` and the
- number itself.
- Examples
- ========
- >>> from sympy import Q, ask
- >>> ask(Q.prime(0))
- False
- >>> ask(Q.prime(1))
- False
- >>> ask(Q.prime(2))
- True
- >>> ask(Q.prime(20))
- False
- >>> ask(Q.prime(-3))
- False
- """
- name = 'prime'
- handler = Dispatcher(
- "PrimeHandler",
- doc=("Handler for key 'prime'. Test that an expression represents a prime"
- " number. When the expression is an exact number, the result (when True)"
- " is subject to the limitations of isprime() which is used to return the "
- "result.")
- )
- class CompositePredicate(Predicate):
- """
- Composite number predicate.
- Explanation
- ===========
- ``ask(Q.composite(x))`` is true iff ``x`` is a positive integer and has
- at least one positive divisor other than ``1`` and the number itself.
- Examples
- ========
- >>> from sympy import Q, ask
- >>> ask(Q.composite(0))
- False
- >>> ask(Q.composite(1))
- False
- >>> ask(Q.composite(2))
- False
- >>> ask(Q.composite(20))
- True
- """
- name = 'composite'
- handler = Dispatcher("CompositeHandler", doc="Handler for key 'composite'.")
- class EvenPredicate(Predicate):
- """
- Even number predicate.
- Explanation
- ===========
- ``ask(Q.even(x))`` is true iff ``x`` belongs to the set of even
- integers.
- Examples
- ========
- >>> from sympy import Q, ask, pi
- >>> ask(Q.even(0))
- True
- >>> ask(Q.even(2))
- True
- >>> ask(Q.even(3))
- False
- >>> ask(Q.even(pi))
- False
- """
- name = 'even'
- handler = Dispatcher("EvenHandler", doc="Handler for key 'even'.")
- class OddPredicate(Predicate):
- """
- Odd number predicate.
- Explanation
- ===========
- ``ask(Q.odd(x))`` is true iff ``x`` belongs to the set of odd numbers.
- Examples
- ========
- >>> from sympy import Q, ask, pi
- >>> ask(Q.odd(0))
- False
- >>> ask(Q.odd(2))
- False
- >>> ask(Q.odd(3))
- True
- >>> ask(Q.odd(pi))
- False
- """
- name = 'odd'
- handler = Dispatcher(
- "OddHandler",
- doc=("Handler for key 'odd'. Test that an expression represents an odd"
- " number.")
- )
|