o
    *ήca                     @   sf  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@ dd ZAd[ddZBdd ZCdd ZDdd ZEdd ZFe>dd ZGdd ZHd d! ZId"d# ZJd$d% ZKd&d' ZLd(d) ZMd*d+ ZNd,d- ZOd.d/ ZPd0d1 ZQd2d3 ZRd4d5 ZSd6d7 ZTd8d9 ZUd:d; ZVd<d= ZWd>d? ZXd@dA ZYdBdC ZZdDdE Z[dFdG Z\dHdI Z]dJdK Z^dLdM Z_dNdO Z`dPdQ ZadRdS ZbdTdU ZcdVdW ZddXdY ZedZS )\    )	summation)Dict)MulPowS)Symbol)	factorial)bitcount)IntegerRational)totient	factorintprimefactorsdivisors	nextprime
primerangepollard_rhoperfect_powermultiplicitymultiplicity_in_factorialtrailingdivisor_count	primorialpollard_pm1divisor_sigma	factorratreduced_totient)
smoothnesssmoothness_pproper_divisorsantidivisorsantidivisor_countcore	udivisorsudivisor_sigmaudivisor_countproper_divisor_countprimenu
primeomegasmall_trailingmersenne_prime_exponent
is_perfectis_mersenne_primeis_abundantis_deficientis_amicabledradrm)raisesslow)capturec                 C   sJ   || krdS || d krdS | d}}||kr#|| }||7 }||ks|S )zEReturn the power of the prime number p in the
    factorization of n!r          )npqmr9   r9   G/tmp/pip-target-vg8gfxp4/lib/python/sympy/ntheory/tests/test_factor_.pyfac_multiplicity   s   
r?   r9   r8   c                 C   s~   | s|S t | trt|  } |}g }| D ]!\}}|sq|dkr%||9 }q|d r-||9 }|||d f q|t|d  S )a  
    Return the product of a sequence of factors with multiplicities,
    times the value of the parameter ``start``. The input may be a
    sequence of (factor, exponent) pairs or a dict of such pairs.

        >>> multiproduct({3:7, 2:5}, 4) # = 3**7 * 2**5 * 4
        279936

    r8   r7   )
isinstancedictiteritemsappendmultiproduct)seqstartunitsmultibaseexpr9   r9   r>   rE   )   s   


rE   c                  C   s  t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t ddks0J tdD ]} t d| > | ks@J t d| > d | ksLJ q4t dd	> d	ksWJ t dd
> d d
kscJ td d }t | t |kstJ t| t|ksJ d S )Nr   r8   r7      id   iz  iAB i$. l   >qKwl/-:)r   ranger+   r   )ibigr9   r9   r>   test_trailing_bitcountE   s   rS   c                  C   sd  t ddD ].} t dD ]'}t| | | |ksJ t| | | d |ks%J t| | | d |ks2J qqtddd dks?J tddd	ksHJ ttd
d  ttdd  ttdd  ttdd  ttdd  tdtddd	kswJ ttddtddd	ksJ ttd	dtdddksJ ttddtdddksJ tdtd	ddksJ d S )Nr7      rN      i9C 
   i''  l    d(	 r8   c                   S   s
   t ddS )Nr8   r   r9   r9   r9   r>   <lambda>b      
 z#test_multiplicity.<locals>.<lambda>c                   S   
   t ddS )Nr8   r7   rW   r9   r9   r9   r>   rX   c   rY   c                   S   rZ   )N?r7   rW   r9   r9   r9   r>   rX   d   rY   c                   S   rZ   )Nr7   r   rW   r9   r9   r9   r>   rX   e   rY   c                   S   rZ   )Nr[   r   rW   r9   r9   r9   r>   rX   f   rY      rM         1   rL   	   )rP   r   r4   
ValueErrorr   )brQ   r9   r9   r>   test_multiplicityW   s$   rd   c                  C   s.   t d} dD ]}t|| t|dksJ qd S )N  )
r7   r]         r\   $   0   <   H   `   )facr   r   )r:   rQ   r9   r9   r>   test_multiplicity_in_factorialp   s   rn   c                  C   s  t tdd  tddu sJ tddu sJ tddu sJ tddu s'J tdd	ks/J td
du s7J tddks?J tddu sGJ tddgdu sQJ tdd dks[J tdd d du sgJ tdd d du ssJ tdd dks}J tdd d du sJ tdd d du sJ tdd dksJ tdd d du sJ tdd d du sJ tdd dksJ tdd d du sJ tdd d du sJ tdd d d dd d dfksJ tdd d d d du sJ tdd d d d du sJ tdd d dddd dfks!J tdd dks,J tdd  d!ks7J td"dd#gdu sCJ td$ddgdd%du sQJ td&d'ksZJ td(du scJ td)du slJ td*du suJ d+} td,D ]@}t| d|  }|r|d |ks|dksJ t| d|  dd}|r|d dks|dks|dksJ ||fq{td-du sJ td.d/ksJ ttddd tjdfksJ ttd0dd d0tj dfksJ d S )1Nc                   S      t dS )Ng?)r   r9   r9   r9   r>   rX   w       z$test_perfect_power.<locals>.<lambda>r   Fr8   r7   r^   r]   r7   r7         )   r7            )rv   rw      ('w_ rM   )rx   rM   rg   )rx   rg   '  )r7   ry   r`   c   rj   rV   i@  )rR   順 )rV   r{   顆 )rV   r|   io  rt   Q   )factori/  )   r^   ia  i"  i`  i      i)ra   r^   )r4   rb   r   r   r   r   Half)tdr=   r9   r9   r>   test_perfect_powerv   sZ   ( "&"4"*r   c                     s&	  t dg dks
J tdddiksJ tdi ksJ tdddiks&J tddddks1J tddd	dks<J td
d
diksFJ tddd
ddksRJ tdddddks^J tdddd
ddkskJ tddddksvJ tddddksJ tdd d d
ddddksJ tddd
d
dd
dddksJ tdd
dddksJ tdd
dddksJ tddddgksJ tdddg ksJ tddddgksJ tddddd
gksJ tdddg dksJ td
ddd
gksJ td ddg d!ks
J tdddg d"ksJ tdddg d#ks$J tdddg d$ks1J tdddd%d&gks>J tdddd'd(gksKJ ttdd)d*i ksXJ ttd+d)d*d	d
ddd,ksjJ ttd-d)d*d.dd/d
ddd0ks~J ttd1d)d*d2d3d	d
ddddd4ksJ ttd5d)d*d6d7d	d/d
ddddd8	ksJ tttd9td9ksJ tttd9d)d*td9ksJ ttd: D ]\} | td:ksJ qttd:d)d* D ]\} | td:ksJ qtd;d+ d;d+iks
J td<d= d<d=iksJ td
d> d/d?  d@dA  dBdC  d>d?dAdCdDks3J tttdEdFks@J tttdEd)d*dFksOJ tdGdddddddHks_J tdIdIdiksjJ tdd)dJtdkswJ tdKD ]ttksJ q{tdddLd'ksJ td6ddLd u sJ td/d
dMd/diksJ tdNddddOksJ tdNd/dMdddPksJ tdddMi ksJ tdd/ddiksJ tdQddMdQdiksJ tdRd
dMdddSksJ tdTd
dMd
d	iksJ tdUd/dMd
ddVksJ tdWd/dMd
d
dVks#J t	dX}t	dY}t	|}t|| | |d|d|diksBJ tdZd-dMddd[ksPJ td\d]dMddd^ks^J tt
d_d dd`tdaddbddcddddikswJ t	d
de  t	 dY dft fdgdhv sJ ttdidh  ttdjdh  ttdkdh  t	dYt	dl t	dm dntfdodhv sJ tdpdh  t	dltfdqdh tfdrdh t	dlt	9 dstfdtdhv sJ t	9 ttd/ksJ tt|dMd/ksJ t	d
 9 dutfdvdhv s#J tfdwdhdxd
ks3J t	dyt	d
 t	d
 d
 9 tfdzdh t	dl}t	d
| }t||d
  d/ |d/|dikskJ ttd{dh  d|}d
d/d}tt|ksJ ttt|ksJ d S )~Ni@ )r7   r^     r   r8   rL   ra   )rL   r7   ir]   r7   ~   )r7   r^   rM   rf   iZ )r^   rM      Q  iA)9  I  l           )/    Q9ct rV   &   )r^      l   vudl   qWV[{l   ,E )r^   rt   r   +       !  l   P )r   r   r   l   UW:xa )i+	  i  i  Tmultiple)rL   r7   r7   r7   r7   r   )r7   r7   r7   r^   )r7   r^   r^   rM   )r7   r7   r7   r7   r7   r7   r^   r   )r^   rM   r   r   r   r   r   r   r   FevaluaterM   )r7   r^   rt   rM   r   r   r^   )r7   r^   rt   rM   r      rT         )r7   r^   rt   rM   r   r         rU   r   r`   )	r7   r^   rt   rM   r   r   r   r   rU         l   ('w_ rO      re   i         rj   )r7   r^   r   r   '  i  l   |+^A*\,	Mi>)r7   rt   I      WmW l   cj>g r   r   )	use_triali`  )seed)limit90  )r^   rt   i7  )i  r^   rg   r\   )r7   r      |   )r7      i  l           ig  )r   iC  l   #OP  )i!Xxi  r   )use_pm1l   -z\ i  i  i    Fermatc                      s   t   ddS Nr8   verboser   r9   )arc   r9   r>   rX          z test_factorint.<locals>.<lambda>c                   S   ro   )Nr]   )r   r9   r9   r9   r>   rX      rp   c                   S   ro   )Nr^   r   r9   r9   r9   r>   rX      rp   c                   S   s   t dddS )NrV   r7   )Br   r9   r9   r9   r>   rX         i   im  zwith primesc                         t  ddS r   r   r9   r:   r9   r>   rX     r   c                   S   s   t tdd ddS )Nr   i  r8   r   )r   r   r9   r9   r9   r>   rX         c                      s   t  d ddS )Nr^   r8   r   r   r9   r   r9   r>   rX     r   c                      s   t d  ddS )Nr7   r8   r   r   r9   r   r9   r>   rX   	  r   1000c                         t  dddS )Nre   r8   r   r   r   r9   r   r9   r>   rX         2001c                      r   )Nr   r8   r   r   r9   r   r9   r>   rX     r   c                      r   )Ni  r8   r   r   r9   r   r9   r>   rX     r   Pollardi  c                      r   r   r   r9   r   r9   r>   rX     r   c                   S   ro   )Ng      @r   r9   r9   r9   r>   rX      rp   z
2**10*3**3)r]   rg   )r   r   rm   rE   rC   r?   lenrP   r   r   r   intr6   r4   rb   countstrr   )ep1p2p3sansr9   )r   rc   r:   r>   test_factorint   s   " $


""


&


&
r   c                   C   s(  t ddgks	J t dg ksJ t ddgksJ t dddgks$J t dddgks.J t dddgks8J t dg dksBJ t d	g d
ksLJ t dddgksVJ tddks^J tddksfJ tddksnJ tddksvJ tddks~J tddtdksJ tdddksJ d S )NrL   r8   r   r7   r^   r   rV   r8   r7   rt   rV   rN   )	r8   r7   r]   rt   rV   rT   rs   2   rN   e   rf   r]   rg      rj   r\   rM   )r   r   r9   r9   r9   r>   test_divisors_and_divisor_count(  s    r   c                   C   s   t dg ksJ t dg ksJ t dg ksJ t ddgks!J t ddgks*J t ddgks3J t dg dks=J t d	g d
ksGJ t ddgksPJ tddksXJ tddks`J tddkshJ tddkspJ tddksxJ d S )NrL   r   r8   r7   r^   r   rV   )r8   r7   rt   rN   )r8   r7   r]   rt   rV   rT   rs   r   iʚ;rh   r   r\   rM   )r!   r(   r9   r9   r9   r>   -test_proper_divisors_and_proper_divisor_count=  s   r   c                   C   s4  t ddgks	J t dg ksJ t ddgksJ t dddgks$J t dddgks.J t dddgks8J t dg dksBJ t d	g d
ksLJ t dddgksVJ t dg dks`J tddkshJ tddkspJ tddksxJ tddksJ tddksJ tddksJ tddksJ d S )NrL   r8   r   r7   r^   r   rV   r   rN   )r8   r]   rs   rN   r   re   )r8   r   }   re   rf   r]   rg   r   r      r   )r%   r'   r9   r9   r9   r>   !test_udivisors_and_udivisor_countO  s"   r   c                  C   s2   t tdt ttd} | h dksJ d S )Nr]   r7   >   r8   r7   r]   )setr   unionr   r   r9   r9   r>   test_issue_6981e  s   r   c                     sL  dd t ddD g dksJ tddksJ tdd	ks J td
dks(J tdd dd ks4J ttdd  ttdd  tddd} t| sNJ t| | ddksZJ tt| | ddfdkshJ tdddd}t|jsvJ tddd tt fdd tdddttfd d td!ddd"ttfd#d d S )$Nc                 S      g | ]}t |qS r9   r   .0kr9   r9   r>   
<listcomp>k  r   z test_totient.<locals>.<listcomp>r8   rg   )r8   r8   r7   r7   r]   r7   rf   r]   rf   r]   rV     i@    	      r7   rN   rz   c                   S   ro   )Ng>@r   r9   r9   r9   r>   rX   r  rp   ztest_totient.<locals>.<lambda>c                   S   ro   )NgK7A 4@r   r9   r9   r9   r>   rX   s  rp   r=   Tinteger  ƙ  r   *   r:   r   positivexFc                         t  S Nr   r9   )r   r9   r>   rX   ~  rp   y)r   c                      r   r   r   r9   )r   r9   r>   rX     rp   z)r   r   c                      s   t d   S )Nr7   r   r9   )r   r9   r>   rX     r   )rP   r   r4   rb   r	   subsr   
is_integerr=   r:   r9   )r   r   r   r>   test_totientj  s*   r   c                  C   s   dd t ddD g dksJ tddksJ tdd	ks J td
dks(J tdd dd ks4J tddd} t| s@J t| | ddksLJ tt| | ddfdksZJ tdddd}t|jshJ d S )Nc                 S   r   r9   )r   r   r9   r9   r>   r     r   z(test_reduced_totient.<locals>.<listcomp>r8   r   )r8   r8   r7   r7   r]   r7   rf   r7   rf   r]   rV   r7   rg   rf   r]   r   rj   r   r   r   r   r7   rN   b   r=   Tr   iH5 r   D   r:   r   )rP   r   r	   r   r   r   r   r9   r9   r>   test_reduced_totient  s   r   c                  C   s*  dd t ddD g dksJ dd t ddD g dks J tdd	ks(J tdd
dks1J tddd	ks:J tdddksCJ tdddksLJ tddd} tddd}tdddd}tdddd}t| | ||  | |d  d ||d  d  | d |d   ksJ t| | ||  d| d| d  d |d| d  d  | d d |d d   ksJ t| | ||  d
|d |d  ksJ tddd}tddd}t|sJ t||sJ t||ddksJ t|||df|dfgdksJ tt||ddfdksJ d S )Nc                 S   r   r9   r   r   r9   r9   r>   r     r   z&test_divisor_sigma.<locals>.<listcomp>r8   rg   )r8   r^   r]   rM   rf   rg   r   r   r   r   rg   c                 S      g | ]}t |d qS )r7   r   r   r9   r9   r>   r         )r8   rt   rV         r   r   U   [      z   [  i  r   r   r7   ilR+r^   l   ` A[5r   T)primerc   jr   r   r=   r   r   iY l   s	 r   rz   )rP   r   r	   r   r   )r   rc   r  r   r=   r9   r9   r>   test_divisor_sigma  s2   HZ*&"r  c                  C   s&  dd t ddD g dksJ dd t ddD g dks J tdd	ks(J tdd
dks1J tddd	ks:J tdddksCJ tdddksLJ tddd} tddd}t| s^J t| |seJ t| | ddksqJ t| || df|dfgdksJ tt| | ddfdksJ d S )Nc                 S   r   r9   r&   r   r9   r9   r>   r     r   z'test_udivisor_sigma.<locals>.<listcomp>r8   rg   )r8   r^   r]   rt   rf   rg   r   r`   rV   r   rg   c                 S   r   )r^   r  r   r9   r9   r>   r     r   )r8   r`      A   r      iX  i  i  in  i4  r  i  r   r   r7   iH)r]   l   ~mPy@#r=   Tr   r      i  l      @ r      )rP   r&   r	   r   r   )r=   r   r9   r9   r>   test_udivisor_sigma  s$   $ r  c                   C   s   t ddddksJ d S )Ni r7   r8   )5   io  r   r9   r9   r9   r>   test_issue_4356  s   r  c                   C   sH   t dg dks
J dd t ddD g dksJ t dg ks"J d S )	Nr  )r8   r7   r]   rM   rr   r  c                 S      g | ]}|qS r9   r9   r   r   r9   r9   r>   r     r   z!test_divisors.<locals>.<listcomp>i   r8   )r8   r^   rt   r   rM   r   #   r  r   )r   r9   r9   r9   r>   test_divisors  s    r  c                   C   s$   t ddksJ t ddksJ d S )Nr   rf   r]   )r   r9   r9   r9   r>   test_divisor_count     r  c                   C   sH   t dg ksJ t dg dksJ dd t ddD g dks"J d S )	NrL   r  )r8   r7   r]   rM   rr   c                 S   r  r9   r9   r  r9   r9   r>   r     r   z(test_proper_divisors.<locals>.<listcomp>r  T)r8   r^   rt   r   rM   r   r  )r!   r9   r9   r9   r>   test_proper_divisors  s   $r  c                   C   s$   t ddksJ t ddksJ d S )Nrf   r^   l   r   )r(   r9   r9   r9   r>   test_proper_divisor_count  r  r  c                   C   s   t dg ksJ t ddgksJ t dg dksJ t dg dks%J t dg d	ks/J t d
dgks8J tdd t ddD g dksJJ t dg ksRJ d S )NrL   r   r7   rr   )r^   r]   r`      )	r7   rt   rf   r   r   rs   r   _      r   )	r7   rf   rM   rV   r\   in  i  iJ  i&   i   r
  c                 s   s    | ]}|V  qd S r   r9   r  r9   r9   r>   	<genexpr>  s    z$test_antidivisors.<locals>.<genexpr>r  r8   )	r7   rf   rV   r   rr   r   r\   r   F   )r"   sortedr9   r9   r9   r>   test_antidivisors  s   r  c                   C   s   t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t d	d
ks0J t ddks8J t ddks@J d S )Nr   rL   r   r8   rT   r^   rs   rt   r   rM   r   rf   r\   )r#   r9   r9   r9   r>   test_antidivisor_count  s   r   c                   C   s   t ddksJ t ddksJ tddddg dfksJ tddg d	fks*J tddd
dg dfks8J tddddksBJ d S )Nr8   )r8   r8      )r^   r   i(  )r=   ))r^   )r7   r7   r]   )r   r8   rt   rt   )=   )r8   r   r   rL   )r^   )r7   r7   r7   r   )r8   r^   r`   r#  r"  )power)r$  r&  r%  l   ['N"Nvisualz[p**i=4410317**1 has p-1 B=1787, B-pow=1787
p**i=4869863**1 has p-1 B=2434931, B-pow=2434931)r   r    r9   r9   r9   r>    test_smoothness_and_smoothness_p  s   





r*  c                  C   s   t ddddks
J t ddd} t| tksJ t| dks J t dddtju s+J tdd}t dddttdi |tdi |tdi |fi |ksQJ dt dddjv s\J d S )Nr8   r(  r   Tz2**1*3**1*7**1Fr   i  r7   r^   rM   rL   irq   )r^   r7   )rM   r7   )	r   typer   r   r   OnerA   r   args)forty2nor9   r9   r>   test_visual_factorint  s   
r0  c                   C   s  t ttdd dddksJ t ttdddddksJ t ttdd ddd	ks/J t ttddddd	ks>J t ttd
d d dddksPJ ttdd ddg dks`J ttddddg ksmJ ttdd ddtddtjddgksJ ttddddtddtjddgksJ ttddddg dksJ ttd
d d dddtddtddtddtjddgksJ d S )Nrg   r8   Tr(  z	2**2*3**11rs   rr   z
5**2/(2*7)ir`   z-1*5**2/(2*3**2*7)r   )r7   r7   r^   rM   rt   rL   r^   )r   r   r   r   r   r9   r9   r9   r>   test_factorrat  s     $ ,*$r2  c                     sV  t t d}  | } |dd}| }|}|||| |fD ]}|dd|ks+J |dd|ks5J q|||| |fD ]}|dd|ksIJ q=fdd|||| |fD |||||gksaJ fdd|||| |fD |||||gksxJ ||| fD ]} |dd|ksJ  |dd|ksJ q}||| fD ]} |dd|ksJ q fd	d||| fD |||gksJ  fd
d||| fD |||gksJ tddddidddksJ tfddddd D i dddksJ  ddidd dksJ  tfddddd D i dd dks)J d S )Nr   Tr(  r8   Fc                       g | ]} |d dqS Nr(  r9   r   thsmr9   r>   r   3      z"test_visual_io.<locals>.<listcomp>c                    r3  )r7   r(  r9   r5  r7  r9   r>   r   4  r9  c                    r3  r4  r9   r5  fir9   r>   r   <  r9  c                    r3  )r   r(  r9   r5  r:  r9   r>   r   =  r9  r   r]   r7   r   c                    "   g | ]\}}t ||fi  qS r9   r   r   r   vr/  r9   r>   r   B     " rf   )r]   r7   i   c                    r<  r9   r   r=  r?  r9   r>   r   F  r@  )r    r   rA   r   rC   )r:   r   r=   r   sr6  r9   )r;  r/  r8  r>   test_visual_io%  sD   ..&&
&&rB  c                   C   sl   t dddks	J t ddksJ t dddksJ t d	d
dks#J t ddks+J t dddks4J d S )Nl   s#->hJf rV   i{  iD  r8   i`  r^   rh   l      P ~cegru   r{   i4 rr   rf   )r$   r9   r9   r9   r>   	test_coreJ  s   rC  c                  C   s   t ddksJ t ddksJ t ddksJ t dt dt d ks&J dd	 tdd
D g dks6J t tddks@J t dd d dksLJ tddd} t | sXJ t | | ddksdJ tt | | ddfdksrJ d S )Nr7   r8   rf   r\   r^   K   rs   c                 S   r   r9   )r)   r   r;   r9   r9   r>   r   X  r   z test_primenu.<locals>.<listcomp>rV   r8   r8   r8   r8   r   r   &  r:   Tr   r   )r)   r   rm   r	   r   r   r   r9   r9   r>   test_primenuS       rI  c                  C   s   t ddksJ t ddksJ t ddksJ t dt dt d ks&J dd	 tdd
D g dks6J t tddks@J t dd d dksLJ tddd} t | sXJ t | | ddksdJ tt | | ddfdksrJ d S )Nr7   r8   r]   rg   r^   rD  rs   c                 S   r   r9   )r*   rE  r9   r9   r>   r   f  r   z#test_primeomega.<locals>.<listcomp>rV   rF  r   r  rG  r:   Tr   rH  r\   ;   )r*   r   rm   r	   r   r   r   r9   r9   r>   test_primeomegaa  rJ  rL  c                   C   s`   t ddksJ t ddksJ t ddksJ t ddks J ttd	d
  ttdd
  d S )Nr8   r7   r]   rM   rV   Y   rs   iT  c                   S   ro   )N4   r,   r9   r9   r9   r>   rX   t  rp   z.test_mersenne_prime_exponent.<locals>.<lambda>c                   S   ro   )Nr   rO  r9   r9   r9   r>   rX   u  rp   )r,   r4   rb   r9   r9   r9   r>   test_mersenne_prime_exponento  s   rP  c                   C   st   t ddu sJ t ddu sJ t ddu sJ t ddu s J t ddu s(J t ddu s0J t d	du s8J d S )
Nrf   Tr   Fr  i  i  i  r   )r-   r9   r9   r9   r>   test_is_perfectx  s   rQ  c                   C   sT   t ddu sJ t ddu sJ t ddu sJ t ddu s J t ddu s(J d S )NrV   Fr   Ti  i rH  )r.   r9   r9   r9   r>   test_is_mersenne_prime  
   rR  c                   C   sT   t ddu sJ t ddu sJ t ddu sJ t ddu s J t ddu s(J d S )NrV   Frg   Tr   r   i  )r/   r9   r9   r9   r>   test_is_abundant  rS  rT  c                   C   sT   t ddu sJ t ddu sJ t ddu sJ t ddu s J t ddu s(J d S )NrV   Tru   8   FrT   rh   )r0   r9   r9   r9   r>   test_is_deficient  rS  rV  c                   C   s:   t dddu s	J t dddu sJ t dddu sJ d S )N      F   i  Ti4"  )r1   r9   r9   r9   r>   test_is_amicable  s   rZ  c                   C   sh   t dddks	J t dddksJ t dddksJ t d	ddks$J ttd
d  ttdd  d S )Nr   rg   r   
  rV   r`   r   ru   iec                   S   rZ   Nr   ra   r2   r9   r9   r9   r>   rX     rY   ztest_dra.<locals>.<lambda>c                   S   rZ   )Ng3333338@rt   r]  r9   r9   r9   r>   rX     rY   )r2   r4   rb   r9   r9   r9   r>   test_dra     r^  c                   C   sh   t dddks	J t dddksJ t dddksJ t d	dd
ks$J ttdd  ttdd  d S )Nr   rg   rM   r[  rV   r7   r   r   i rf   c                   S   rZ   r\  r3   r9   r9   r9   r>   rX     rY   ztest_drm.<locals>.<lambda>c                   S   rZ   )Ng333333'@r`   r`  r9   r9   r9   r>   rX     rY   )r3   r4   rb   r9   r9   r9   r>   test_drm  r_  ra  N)r9   r8   )fsympy.concrete.summationsr   sympy.core.containersr   sympy.core.mulr   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr	   (sympy.functions.combinatorial.factorialsr
   rm   sympy.core.evalfr   sympy.core.numbersr   r   sympy.ntheoryr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.ntheory.factor_r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   sympy.testing.pytestr4   r5   sympy.utilities.iterablesr6   r?   rE   rS   rd   rn   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r*  r0  r2  rB  rC  rI  rL  rP  rQ  rR  rT  rV  rZ  r^  ra  r9   r9   r9   r>   <module>   sh    L\
1
 %		
