
    MZda                     "   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 ZAd4dZBd ZCd ZDd ZEd ZFe>d        ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd  ZSd! ZTd" ZUd# ZVd$ ZWd% ZXd& ZYd' ZZd( Z[d) Z\d* Z]d+ Z^d, Z_d- Z`d. Zad/ Zbd0 Zcd1 Zdd2 Zey3)5    )	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                 V    || kD  ry|| dz  kD  ry| d}}||k\  r||z  }||z  }||k\  r|S )zEReturn the power of the prime number p in the
    factorization of n!r          )npqms       B/usr/lib/python3/dist-packages/sympy/ntheory/tests/test_factor_.pyfac_multiplicityr@      sN     	1u1a4xaqA
q&	a	Q q& H    c                     | s|S t        | t              rt        | j                               } |}g }| D ]3  \  }}|s	|dk(  r||z  }|dz  r||z  }|j	                  ||dz  f       5 |t        |      dz  z  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

    r9   r8   )
isinstancedictiteritemsappendmultiproduct)seqstartunitsmultibaseexps         r?   rH   rH   )   s     #t399;EE )	cAXTMEQwLL$Q() <&)))rA   c                     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(  sJ t        d      D ]+  } t        d| z        | k(  sJ t        d| z  dz        | k(  r+J  t        dd	z        d	k(  sJ t        dd
z  dz        d
k(  sJ t        d   dz  }t        |       t        |      k(  sJ t        |       t        |      k(  sJ y )Nr   r9   r8      id   iz  iAB i$. l   >qKwl/-:)r   ranger+   r   )ibigs     r?   test_trailing_bitcountrW   E   s(   A;!A;!B<1A;!A;!B<13Z /Q1$$$a5()Q.../ AL!W,,,Q&[%'(F222

Q
CSD>Xc]***SD>Xc]***rA   c                     t        dd      D ]T  } t        d      D ]D  }t        | | |z        |k(  sJ t        | | |z  dz        |k(  sJ t        | | |z  dz        |k(  rDJ  V t        dddz        dk(  sJ t        dd      d	k(  sJ t        t        d
        t        t        d        t        t        d        t        t        d        t        t        d        t        dt	        dd            d	k(  sJ t        t	        dd      t	        dd            d	k(  sJ t        t	        d	d      t	        dd            dk(  sJ t        t	        dd      t	        dd            dk(  sJ t        dt	        d	d            dk(  sJ y )Nr8      rR      i9C 
   i''  l    d(	 r9   c                      t        dd      S )Nr9   r   r:   rA   r?   <lambda>z#test_multiplicity.<locals>.<lambda>b       |Aq1 rA   c                      t        dd      S )Nr9   r8   r]   r:   rA   r?   r^   z#test_multiplicity.<locals>.<lambda>c   r_   rA   c                      t        dd      S )N?r8   r]   r:   rA   r?   r^   z#test_multiplicity.<locals>.<lambda>d       |C3 rA   c                      t        dd      S )Nr8   r   r]   r:   rA   r?   r^   z#test_multiplicity.<locals>.<lambda>e   r_   rA   c                      t        dd      S )Nrb   r   r]   r:   rA   r?   r^   z#test_multiplicity.<locals>.<lambda>f   rc   rA      rQ         1   rP   	   )rT   r   r4   
ValueErrorr   )brU   s     r?   test_multiplicityrn   W   s   1b\ :s 	:A1a4(A---AqDB;/1444AqDG#34999	:: BI&%///'1,,,
:12
:12
:34
:12
:34 HRO,111AA71<<<AB8A===AA72===8Aq>*b000rA   c                  ^    t        d      } dD ]  }t        ||       t        |d      k(  rJ  y )N  )
r8   rg         rf   $   0   <   H   `   )facr   r   )r;   rU   s     r?   test_multiplicity_in_factorialry   p   s9    D	A2 HAq!%>q$%GGGGHrA   c                     t        t        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 sJ t        d
      dk(  sJ t        d      du sJ t        ddg      du sJ t        ddz        dk(  sJ t        ddz  dz         du sJ t        ddz  dz
        du sJ t        ddz        dk(  sJ t        ddz  dz         du sJ t        ddz  dz
        du sJ t        ddz        dk(  sJ t        ddz  dz         du sJ t        ddz  dz
        du sJ t        ddz        dk(  sJ t        ddz  dz         du sJ t        ddz  dz
        du sJ t        ddz  dz   dz        ddz  dz   dfk(  sJ t        ddz  dz   dz  dz         du sJ t        ddz  dz   dz  dz
        du sJ t        ddz  dz  d      ddz  dfk(  sJ t        ddz        dk(  sJ t        ddz        d k(  sJ t        d!dd"g      du sJ t        d#ddgd$      du sJ t        d%      d&k(  sJ t        d'      du sJ t        d(      du sJ t        d)      du sJ d*} t        d+      D ]V  }t        | d|z  z        }|r|d   |k(  s|dk(  sJ t        | d|z  z  d      }|r	|d   dk(  rC|dk(  rI|dk(  rOJ ||f        t        d,      du sJ t        d-      d.k(  sJ t        t	        dd      dz        t
        j                  dfk(  sJ t        t	        d/d      dz        d/t
        j                  z  dfk(  sJ y )0Nc                      t        d      S )Ng?)r   r:   rA   r?   r^   z$test_perfect_power.<locals>.<lambda>w   s    }S1 rA   r   Fr9   r8   rh   rg   r8   r8         )   r8            )r   r      ('w_ rQ   )r   rQ   rr   )r   rr   '  )r8   r   rj   c   ru   r[   i@  )rV   順 )r[   r   顆 )r[   r   io  r   Q   )factori/  )   rh   ia  i"  i`  i      i)rk   rh   )r4   rl   r   r   r   r   Half)tdr>   s      r?   test_perfect_powerr   v   s8   
:12u$$$u$$$u$$$u$$$v%%%%%%&&&%%%aS!U***v'=888v*+u444v*+u444q)->>>>q1,-666q1,-666r)*.@@@@r)A-.%777r)A-.%777E"j000EA&%///EA&%///!R%!)b)aeai_<<<!R%!)b1,-666!R%!)b1,-666"e)aU3E	1~EEEV$444V$444A'50002wq1U:::#w...#u,,,!U***#u,,,Ab\ ;!AqD&!QqTQY!q&((!AqD&e,QqTQY!q&AF:QF:2	; %%%'''!Q*+{:::"a!+,AFFA>>>rA   c                     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(  sJ t        d      dd	dk(  sJ t        d
      d
dik(  sJ t        d      dd
ddk(  sJ t        d      ddddk(  sJ t        d      ddd
ddk(  sJ t        d      dddk(  sJ t        d      dddk(  sJ t        ddz  dz
        d
ddddk(  sJ t        d      dd
d
dd
dddk(  sJ t        d      d
dddk(  sJ t        d      d
dddk(  sJ t        dd      dgk(  sJ t        dd      g k(  sJ t        dd      dgk(  sJ t        dd      dd
gk(  sJ t        dd      g dk(  sJ t        d
d      d
gk(  sJ t        d d      g d!k(  sJ t        dd      g d"k(  sJ t        dd      g d#k(  sJ t        dd      g d$k(  sJ t        dd      d%d&gk(  sJ t        dd      d'd(gk(  sJ t        t        dd)*            i k(  sJ t        t        d+d)*            d	d
ddd,k(  sJ t        t        d-d)*            d.dd/d
ddd0k(  sJ t        t        d1d)*            d2d3d	d
ddddd4k(  sJ t        t        d5d)*            d6d7d	d/d
ddddd8	k(  sJ t        t        t        d9                  t        d9      k(  sJ t        t        t        d9d)*                  t        d9      k(  sJ t        t        d:            j	                         D ]  \  } | t        d:      k(  rJ  t        t        d:d)*            j	                         D ]  \  } | t        d:      k(  rJ  t        d;d+z        d;d+ik(  sJ t        d<d=z        d<d=ik(  sJ t        d
d>z  d/d?z  z  d@dAz  z  dBdCz  z        d>d?dAdCdDk(  sJ t        t        t        dE                  dFk(  sJ t        t        t        dEd)*                  dFk(  sJ t        dG      dddddddHk(  sJ t        dI      dIdik(  sJ t        dd)J      t        d      k(  sJ t        dK      D ]  t        t                    k(  rJ  t        ddL      d'k(  sJ t        d6dL      J t        d/d
M      d/dik(  sJ t        dN      ddddOk(  sJ t        dNd/M      dddPk(  sJ t        ddM      i k(  sJ t        dd/      ddik(  sJ t        dQdM      dQdik(  sJ t        dRd
M      dddSk(  sJ t        dTd
M      d
d	ik(  sJ t        dUd/M      d
ddVk(  sJ t        dWd/M      d
d
dVk(  sJ t        dX      }t        dY      }t        |      }t        ||z  |z        |d|d|dik(  sJ t        dZd-M      ddd[k(  sJ t        d\d]M      ddd^k(  sJ t        t        d_      dz   d`      t        da      ddbddcddddik(  sJ t        d
dez        t        dYz         dft        fdg      v sJ t        t        dh        t        t        di        t        t        dj        t        dY      t        dk      z  t        dl      z  dmt        fdn      v sJ t        do        t        dk      t        fdp       t        fdq       t        dk      t              z  drt        fds      v sJ t              z  t        t                    d/k(  sJ t        t        |M            d/k(  sJ t        d
z        z  dtt        fdu      v sJ t        fdv      j                  dw      d
k(  sJ t        dx      t        d
z        t        d
z  d
      z  z  t        fdy       t        dk      }t        d
|z        }t        ||d
z  z  d/z        |d/|dik(  sJ t        t        dz        d{}d
d/d|t!        t                    |k(  sJ t!        t        t#                          |k(  sJ y )}Ni@ )r8   rh     r   r9   rP   rk   )rP   r8   irg   r8   ~   )r8   rh   rQ   rq   iZ )rh   rQ      Q  iA)9  I  l           )/    Q9ct r[   &   )rh      l   vudl   qWV[{l   ,E )rh   r   r   +       !  l   P )r   r   r   l   UW:xa )i+	  i  i  Tmultiple)rP   r8   r8   r8   r8   r   )r8   r8   r8   rh   )r8   rh   rh   rQ   )r8   r8   r8   r8   r8   r8   rh   r   )rh   rQ   r   r   r   r   r   r   r   F)evaluaterQ   )r8   rh   r   rQ   r   r   rh   )r8   rh   r   rQ   r      rY         )r8   rh   r   rQ   r   r         rZ   r   rj   )	r8   rh   r   rQ   r   r   r   r   rZ         l   ('w_ rS      rp   i         ru   )r8   rh   r   r   '  i  l   |+^A*\,	Mi>)r8   r   I      WmW l   cj>g r   r   )	use_triali`  )seed)limit90  )rh   r   i7  )i  rh   rr   rf   )r8   r      |   )r8      i  l           ig  )r   iC  l   #OP  )i!Xxi  r   )use_pm1l   -z\ i  i  i    Fermatc                  $    t         z  d      S Nr9   verboser   )arm   s   r?   r^   z test_factorint.<locals>.<lambda>   s    y1a'@ rA   c                      t        d      S )Nrg   )r   r:   rA   r?   r^   z test_factorint.<locals>.<lambda>   
    {1~ rA   c                      t        d      S )Nrh   r   r:   rA   r?   r^   z test_factorint.<locals>.<lambda>   r   rA   c                      t        dd      S )Nr[   r8   )Br   r:   rA   r?   r^   z test_factorint.<locals>.<lambda>  s    {23 rA   i   im  zwith primesc                      t         d      S r   r   r;   s   r?   r^   z test_factorint.<locals>.<lambda>  s    Ia,C rA   c                  4    t        t        d      dz  d      S )Nr   i  r9   r   )r   r   r:   rA   r?   r^   z test_factorint.<locals>.<lambda>  s    Ii.t3Q? rA   c                  $    t         dz  d      S )Nrh   r9   r   r   r   s   r?   r^   z test_factorint.<locals>.<lambda>  s    IadA. rA   c                  $    t        d z  d      S )Nr8   r9   r   r   r   s   r?   r^   z test_factorint.<locals>.<lambda>	  s    Iac1- rA   1000c                       t         dd      S )Nrp   r9   r   r   r   r   s   r?   r^   z test_factorint.<locals>.<lambda>      Yqa%H rA   2001c                       t         dd      S )Nr   r9   r   r   r   s   r?   r^   z test_factorint.<locals>.<lambda>  r   rA   c                       t         dd      S )Ni  r9   r   r   r   s   r?   r^   z test_factorint.<locals>.<lambda>  s    	!43 rA   Pollardi  c                      t         d      S r   r   r   s   r?   r^   z test_factorint.<locals>.<lambda>  s    Ia+ rA   c                      t        d      S )Ng      @r   r:   rA   r?   r^   z test_factorint.<locals>.<lambda>   s
    y~ rA   z
2**10*3**3)rg   rr   )r   r   rx   rH   rF   r@   lenrT   r   r   r   intr6   r4   rl   countstrr   )ep1p2p3sansr   rm   r;   s        @@@r?   test_factorintr      sv	   ;...Q<Aq6!!!Q<2R=RG###R=qM)))S>!]***Q<Aq6!!!S>qQ////VA!! 4444WQ1!!!<<<<X!"4444]#1'EEEERVaZ qa^_$````)*!qaqXYab.cccc01AQa5PPPP01AQa5PPPPQ&1#---Q&",,,R$'B4///R$'B7222S4(,<<<<Q&1#---R$'<777S4(L888Vd+/IIIIWt,0CCCCX-$===]T2v~6NNNNSU+,222SU+,A!a0HHHHSe,-1qaQ/0 0 0Se,-1qaQA1=> > >Se,-1qaQA1!DE E E 	#c(+,C888	#cE":;<CHHH#c(#))+ -1$S!,,,,-#cE2399; -1$S!,,,,-\1_%,)::::UCZ UCL000QWq#v%S037:;Ss,- - -yU$%---yUU345===89!QJK K K_%/1)====Y%0Ii4HHHH5\ /IaL)Q.../yq)V333r"***Qa QF***U13333Q"#?+ + +Qa B&&&Q?q!f$$$Rq!b!W,,,Rq!]222Rq!aV+++S"!m333WA&aQ-777	5	B	5	B	2BRU2X2q"aQ"7777XR(1,====%T2!16MMMMYr]Q&2	[	1dAsAvq9: : : 	!T'A!g+Aw@AAAA
:-.
:-.
:34%5)))D/9AG$CDDDD?@%A./-. 	%A1AWHIIII1Ay|!!!y"%&!+++1Q3AWHIIII355:U95EK K K 	$A1Q3	!A#q)	))A+,	5	B	1R4BbQh]#Ar1~555
:-.D1Ay|$$$ya!"d***rA   c                  6   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(  sJ t        d      g dk(  sJ t        d	      g d
k(  sJ t        d      ddg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(  sJ t        dd      t        d      k(  sJ t        dd      dk(  sJ y )NrP   r9   r   r8   rh   r   r[   r9   r8   r   r[   rR   )	r9   r8   rg   r   r[   rY   r~   2   rR   e   rq   rg   rr      ru   rf   rQ   )r   r   r:   rA   r?   test_divisors_and_divisor_countr   (  sG   B<A3A;"A;1#A;1a&   A;1a&   B<Ar7"""B<=(((C=====C=QH$$$q   !!!q   q   !!!a M&$9999"a'''rA   c                     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(  sJ t        d      g dk(  sJ t        d	      g d
k(  sJ t        d      dg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(  sJ y )NrP   r   r9   r8   rh   r   r[   )r9   r8   r   rR   )r9   r8   rg   r   r[   rY   r~   r   iʚ;rs   r   rf   rQ   )r!   r(   r:   rA   r?   -test_proper_divisors_and_proper_divisor_countr   =  s   2"$$$1###1###1!$$$1!$$$21#%%%2)+++3#????:&1#---"a'''#q((("a'''#q(((&!+++rA   c                  D   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(  sJ t        d      g dk(  sJ t        d	      g d
k(  sJ t        d      ddgk(  sJ t        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k(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ y )NrP   r9   r   r8   rh   r   r[   r   rR   )r9   rg   r~   rR   r   rp   )r9   r   }   rp   rq   rg   rr   r   r      r   )r%   r'   r:   rA   r?   !test_udivisors_and_udivisor_countr   O  sP   R=QCQ<2Q<A3Q<Aq6!!!Q<Aq6!!!R=QG###R=M)))S>_,,,S>aX%%%T?////!!!!""""!!!!!!!!""""#!###'"b(((rA   c            	          t        t        d            j                  t        t        t        d                        } | h dk(  sJ y )Nrg   r8   >   r9   r8   rg   )setr   unionr   r   s    r?   test_issue_6981r   e  s5    HQKs8GAJ#789A<<rA   c                     t        dd      D  cg c]  } t        |        c} 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z        d
dz  k(  sJ t        t        d        t        t        d        t	        dd      }t        |      sJ t        |      j                  |d      dk(  sJ t        t        |      |ddf      dk(  sJ t	        ddd      }t        |      j                  sJ t	        dd      t        t        fd       t	        dd      t        t        fd       t	        ddd      t        t        fd        y c c} w )!Nr9   rr   )r9   r9   r8   r8   rg   r8   rq   rg   rq   rg   r[     i@    	      r8   rR   r   c                      t        d      S )Ng>@r   r:   rA   r?   r^   ztest_totient.<locals>.<lambda>r  s
    wt} rA   c                      t        d      S )NgK7A 4@r   r:   rA   r?   r^   ztest_totient.<locals>.<lambda>s  s
    wv rA   r>   Tinteger  ƙ  r   *   r;   r   positivexFc                      t               S Nr   )r  s   r?   r^   ztest_totient.<locals>.<lambda>~      wqz rA   y)r  c                      t               S r  r   )r  s   r?   r^   ztest_totient.<locals>.<lambda>  r  rA   z)r  r   c                  "    t        d  z        S )Nr8   r   )r	  s   r?   r^   ztest_totient.<locals>.<lambda>  s    wqA2w/ rA   )rT   r   r4   rl   r	   subsr   
is_integer)kr>   r;   r  r  r	  s      @@@r?   test_totientr  j  sT    %a-1GAJ-*+ + +4=D   4=D   4=D   1c6?ae###
:,-
:./sD!A1::1:??1e$444WQZ!Q,222sD40A1:    S% A
:)*S5!A
:)*S4.A
:/03 .s   E4c                     t        dd      D  cg c]  } t        |        c} 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z        d
dz  k(  sJ t        dd      }t        |      sJ t        |      j                  |d      dk(  sJ t	        t        |      |ddf      dk(  sJ t        ddd      }t        |      j
                  sJ y c c} w )Nr9   r   )r9   r9   r8   r8   rg   r8   rq   r8   rq   rg   r[   r8   rr   rq   rg   r   ru   r   r   r   r   r8   rR   b   r>   Tr   iH5 r   D   r;   r  )rT   r   r	   r  r   r  )r  r>   r;   s      r?   test_reduced_totientr    s   (-a51OA578 8 84 B&&&4 D(((4 D(((1c6"ae+++sD!A11""1j1\AAA_Q'!Q4:::sD40A1(((( 6s   C.c                  N   t        dd      D  cg c]  } t        |        c} g dk(  sJ t        dd      D  cg c]  } t        | d       c} g 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      d
k(  sJ t        dd      dk(  sJ t        dd      }t        dd      }t        ddd      }t        ddd      } t        ||z  || z  z        ||dz   z  dz
  || dz   z  dz
  z  |dz
  |dz
  z  z  k(  sJ t        ||z  || z  z  d      |d|z  dz   z  dz
  |d| z  dz   z  dz
  z  |dz  dz
  |dz  dz
  z  z  k(  sJ t        ||z  || z  z  d      |dz   | dz   z  k(  sJ t        dd      }t        dd      } t        |      sJ t        ||       sJ t        |      j                  |d      dk(  sJ t        ||       j                  |df| dfg      dk(  sJ t	        t        |      |ddf      dk(  sJ y c c} w c c} w )Nr9   rr   )r9   rh   rg   rQ   rq   rr   r   r   r   r   rr   r8   )r9   r   r[         r   r   U   [      z   [  i  r   r   ilR+rh   l   ` A[5r   T)primerm   jr  r  r>   r   r   iY l   s	 r   r   )rT   r   r	   r  r   )r  r   rm   r  r>   s        r?   test_divisor_sigmar    s   &+Arl3M!3./ / /).q"6AM!Q645 5 55((("b((("e+++"i///"n444s$As$AsD40AsD40AAad#AE
QQUa'H1q5STWXSX/'ZZZZAadA&1qsQw<!+;a!A#'lQ>N*ORSUVRVYZRZ]^`a]ade]eQf*ggggAadA&1q51q5/999sD!AsD!AA  E*e333A##aZ!Q$89_LLL]1%1bz2b8881 46s
   HH"c                     t        dd      D  cg c]  } t        |        c} g dk(  sJ t        dd      D  cg c]  } t        | d       c} g 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
      dk(  sJ t        dd      dk(  sJ t        dd      }t        dd      } t        |      sJ t        ||       sJ t        |      j                  |d      dk(  sJ t        ||       j                  |df| d
fg      dk(  sJ t	        t        |      |d
df      dk(  sJ y c c} w c c} w )Nr9   rr   )r9   rh   rg   r   rq   rr   r   rj   r[   r   rr   rh   )r9   rj      A   r      iX  i  i  in  i4  r  i  r   r   r8   iH)rg   l   ~mPy@#r>   Tr   r     i  l      @ r      )rT   r&   r	   r  r   )r  r>   s     r?   test_udivisor_sigmar$    sm   ',Q|4!N14-. . .*/2,7QN1a 7;< < <% E)))%#r)))%#u,,,%#y000%#'9999sD!AsD!A!!Q!!!!T*f444!Q$$q$i!Q%89[HHH^A&Ar
3s:::! 57s
   EEc                  *    t        d      dddk(  sJ y )Ni r8   r9   )5   io  r   r:   rA   r?   test_issue_4356r'    s    Waa000rA   c                      t        d      g dk(  sJ t        t        dd            g dk(  sJ t        d      g k(  sJ y )Nr  )r9   r8   rg   rQ   r}   r  i   r9   )r9   rh   r   r   rQ   r  #   r)  r   )r   listr:   rA   r?   test_divisorsr,    sB    B<////"#'DDDDA;"rA   c                  D    t        d      dk(  sJ t        d      dk(  sJ y )Nr   rq   rg   )r   r:   rA   r?   test_divisor_countr.    s(    q   q   rA   c                      t        d      g k(  sJ t        d      g dk(  sJ t        t        dd            g dk(  sJ y )NrP   r  )r9   r8   rg   rQ   r}   r)  T)r9   rh   r   r   rQ   r  r*  )r!   r+  r:   rA   r?   test_proper_divisorsr0    sD    2"$$$2"2222t,-1IIIIrA   c                  D    t        d      dk(  sJ t        d      dk(  sJ y )Nrq   rh   l   r   )r(   r:   rA   r?   test_proper_divisor_countr3    s(    "a'''$***rA   c                  :   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(  sJ t        d t        dd      D              g dk(  sJ t        d      g k(  sJ y )NrP   r   r8   r}   )rh   rg   rj      )	r8   r   rq   r   r   r~   r   _      r   )	r8   rq   rQ   r[   rf   in  i  iJ  i&   i   r"  c              3       K   | ]  }|  y wr  r:   ).0r  s     r?   	<genexpr>z$test_antidivisors.<locals>.<genexpr>  s     4!4s   r)  r9   )	r8   rq   r[   r   r}   r   rf   r   F   )r"   sortedr:   rA   r?   test_antidivisorsr=    s    r!!!s"""y((( BBBB"KKKKF8+++4\%344*+ + +?b   rA   c                     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(  sJ t        d      dk(  sJ t        d      dk(  sJ y )Nr   rP   r   r9   rY   rh   r~   r   r   rQ   r   rq   rf   )r#   r:   rA   r?   test_antidivisor_countr?    s    Q1$$$R A%%%R A%%%R A%%%R A%%%R A%%%S!Q&&&U#q(((rA   c                      t        d      dk(  sJ t        d      dk(  sJ t        dd      dg dfk(  sJ t        d      dg d	fk(  sJ t        dd
      dg dfk(  sJ t        dd      dk(  sJ y )Nr9   )r9   r9      )rh   r   i(  )r>   ))rh   )r8   r8   rg   )r   r9   r   r   )=   )r9   r   r   rP   )rh   )r8   r8   r8   r   )r9   rh   rj   rC  rB  )power)rD  rF  rE  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    r:   rA   r?    test_smoothness_and_smoothness_prJ    s    a=F"""i G+++#	
@AB B B	?@A A AQ'	?@A A Aq1	;; ; ;rA   c            
      x   t        dd      dk(  sJ t        dd      } t        |       t        k(  sJ t        |       dk(  sJ t        dd      t        j
                  u sJ ddi}t        dd      t        t        di |t        di |t        di |fi |k(  sJ d	t        d
d      j                  v sJ y )Nr9   rH  r   Tz2**1*3**1*7**1r   Fi  rP   ir|   )rh   r8   )rQ   r8   )r   typer   r   r   Oner   args)forty2nos     r?   test_visual_factorintrQ    s    Qq!Q&&&r$'F<3v;****Qt$---
e	BU4(CB03B03B-GCE-G G G G 3t,11111rA   c                     t        t        t        d      dz  d            dk(  sJ t        t        t        dd      d            dk(  sJ t        t        t        d      dz  d            d	k(  sJ t        t        t        dd      d            d	k(  sJ t        t        t        d
      dz  dz  d            dk(  sJ t        t        d      dz  d      g dk(  sJ t        t        dd      d      g k(  sJ t        t        d      dz  d      t        dd      t        j                  ddgk(  sJ t        t        dd      d      t        dd      t        j                  ddgk(  sJ t        t        dd      d      g dk(  sJ t        t        d
      dz  dz  d      dt        dd      t        dd      t        dd      t        j                  ddgk(  sJ y )Nrr   r9   TrH  z	2**2*3**11r~   r}   z
5**2/(2*7)irj   z-1*5**2/(2*3**2*7)r   )r8   r8   rh   rQ   r   rP   rh   )r   r   r   r   r   r:   rA   r?   test_factorratrT    s   y2q./;>>>y!Q56#===y2r$/0L@@@y"b)$78LHHHy31T237KKKKQrU1Wt,	999Xa^d3r999QrU2X-(1a.!&&!Q1OOOOXb"%5(1a.!&&RSUV9WWWWXb!_t4	AAAQsVBYq[40	Xa^Xa^Xa^QVVQJK K KrA   c                  p   t         } t        }d} ||      } ||d      } | |      } | |      }|||||fD ]   } | |d      |k(  sJ  | |d      |k(  r J  |||||fD ]  } | |d      |k(  rJ  |||||fD cg c]  } | |d        c}|||||gk(  sJ |||||fD cg c]  } | |d       c}|||||gk(  sJ |||fD ]   } ||d      |k(  sJ  ||d      |k(  r J  |||fD ]  } ||d      |k(  rJ  |||fD cg c]  } ||d        c}|||gk(  sJ |||fD cg c]  } ||d       c}|||gk(  sJ ddi} | d	did       | d
      k(  sJ  | t        dddj                         D 	
cg c]  \  }	}
t	        |	|
fi | c}
}	i |d       | d      k(  sJ  |d	did       |d
      k(  sJ  |t        dddj                         D 	
cg c]  \  }	}
t	        |	|
fi | c}
}	i |d       |d      k(  sJ y c c}w c c}w c c}w c c}w c c}
}	w c c}
}	w )Nr   TrH  r9   Fr8   r   r   rg   r   rq   )rg   r8   i   )r    r   r   rF   r   )smfir;   r   r>   r   sthrP  r  vs              r?   test_visual_ior[  %  s   	B	BA
1A
1TA
1A
1A!Q1o %"T"a'''"Q1$$$% !Q1o )"U#q((()+,aAq/:BBr$:q!Q1oMMM()1aA7Br!7Aq!Q?JJJ !Qi %"T"a'''"Q1$$$% !Qi )"U#q((()+,a)4BBr$4Aq	AAA()1ay1Br!1aAY>>> e	Bq!fU#r"v---cA!0B0B0DE1C1OOELL!%y) ) ) q!fU#r"v---cA!0B0B0DE1C1OOELL!%y) ) )' ;7 51
 F Fs$   ?H&HH"/H'H,'H2c                      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(  sJ y )Nl   s#->hJf r[   i{  iD  r9   i`  rh   rs   l      P ~cegr   r   i4 r}   rq   )r$   r:   rA   r?   	test_corer]  J  sv    u$$$<1a=Bu$$$<21:??rA   c                     t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      t        d      t        d      z   k(  sJ t        dd      D  cg c]  } t        |        c} g d	k(  sJ t        t        d
            dk(  sJ t        ddz  dz
        dk(  sJ t        dd      }t        |      sJ t        |      j	                  |d      dk(  sJ t        t        |      |ddf      dk(  sJ y c c} w )Nr8   r9   rq   rf   rh   K   r~   r[   r9   r9   r9   r9   r   r   &  r;   Tr   r   )r)   r   rx   r	   r  r   r<   r;   s     r?   test_primenurd  S  s   1:??5>Q9"""6?gaj72;6666 *1b 121GAJ2lBBB3r7r!!!19q=!Q&&&sD!A1::1:??1k*a///WQZ!Q,222 3   $Dc                     t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      t        d      t        d      z   k(  sJ t        dd      D  cg c]  } t        |        c} g d	k(  sJ t        t        d
            dk(  sJ t        ddz  dz
        dk(  sJ t        dd      }t        |      sJ t        |      j	                  |d      dk(  sJ t        t        |      |ddf      dk(  sJ y c c} w )Nr8   r9   rg   rr   rh   r_  r~   r[   r`  r   r2  ra  r;   Tr   rb  rf   ;   )r*   r   rx   r	   r  r   rc  s     r?   test_primeomegarh  a  s   a=Ae!!!i A%%%fAB!????#-a#45aJqM5EEEc"g#%%%a4i!m$)))sD!Aa==a=a-222Z]Q2J/2555 6re  c                      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	        t        t        d
        y )Nr9   r8   rg   rQ   r[   Y   r~   iT  c                      t        d      S )N4   r,   r:   rA   r?   r^   z.test_mersenne_prime_exponent.<locals>.<lambda>t  s    6r: rA   c                      t        d      S )Nr   rm  r:   rA   r?   r^   z.test_mersenne_prime_exponent.<locals>.<lambda>u  s    6q9 rA   )r,   r4   rl   r:   rA   r?   test_mersenne_prime_exponentro  o  sd    "1%***"1%***"2&",,,"2&%///
::;
:9:rA   c                      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 sJ t        d	      du sJ y )
Nrq   Tr   Fr  i  i  i  r   )r-   r:   rA   r?   test_is_perfectrq  x  s    a=D   b>U"""b>T!!!c?e###c?d"""dt###e%%%rA   c                      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 y )Nr[   Fr   Ti  i rb  )r.   r:   rA   r?   test_is_mersenne_primers    sa    R E)))S!T)))S!U***V$,,,Z(D000rA   c                      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 y )Nr[   Frr   Tr   r  i  )r/   r:   rA   r?   test_is_abundantru    s]    r?e###r?d"""r?d"""r?e###st###rA   c                      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 y )Nr[   Tr   8   FrY   rs   )r0   r:   rA   r?   test_is_deficientrx    sa    t###t###u$$$u$$$u$$$rA   c                  d    t        dd      du sJ t        dd      du sJ t        dd      du sJ y )N      F   i  Ti4"  )r1   r:   rA   r?   test_is_amicabler}    sA    sC E)))sC D(((tT"e+++rA   c                      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
        t        t        d        y )Nr   rr   r   
  r[   rj   r   r   iec                      t        dd      S Nr   rk   r2   r:   rA   r?   r^   ztest_dra.<locals>.<lambda>      s2r{ rA   c                      t        dd      S )Ng3333338@r   r  r:   rA   r?   r^   ztest_dra.<locals>.<lambda>      s4| rA   )r2   r4   rl   r:   rA   r?   test_drar    sg    r2;!tR=Aq":??x!!!
:*+
:+,rA   c                      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        t        t        d        y )Nr   rr   rQ   r  r[   r8   r   r   i rq   c                      t        dd      S r  r3   r:   rA   r?   r^   ztest_drm.<locals>.<lambda>  r  rA   c                      t        dd      S )Ng333333'@rj   r  r:   rA   r?   r^   ztest_drm.<locals>.<lambda>  r  rA   )r3   r4   rl   r:   rA   r?   test_drmr    sf    r2;!tR=Aq":??vr?a
:*+
:+,rA   N)r:   r9   )fsympy.concrete.summationsr   sympy.core.containersr   sympy.core.mulr   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr	   (sympy.functions.combinatorial.factorialsr
   rx   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@   rH   rW   rn   ry   r   r   r   r   r   r   r  r  r  r$  r'  r,  r.  r0  r3  r=  r?  rJ  rQ  rT  r[  r]  rd  rh  ro  rq  rs  ru  rx  r}  r  r  r:   rA   r?   <module>r     s/   / &    " $ E % 0         
) ) ) ) ) ) . -*8+$12H.?b }+ }+@(*,$),
1:)"98;(1!
J+
	!);
2K ")J36;&1$%,
--rA   