
    oVhg                        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 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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d d
l:m;Z;m<Z< d dl=m>Z> d Z?d1dZ@d ZAd ZBd ZCd ZDd ZEe<d        ZFd 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/ Zby0)2    )Dict)Mul)PowS)	factorial)IntegerRational)gcd)totient	factorintprimefactorsdivisors	nextprimepollard_rhoperfect_powermultiplicitymultiplicity_in_factorialdivisor_count	primorialpollard_pm1divisor_sigma	factorratreduced_totient)
smoothnesssmoothness_pproper_divisorsantidivisorsantidivisor_count_divisor_sigmacore	udivisorsudivisor_sigmaudivisor_countproper_divisor_countprimenu
primeomegamersenne_prime_exponent
is_perfectis_abundantis_deficientis_amicableis_carmichael find_carmichael_numbers_in_rangefind_first_n_carmichaelsdradrm_perfect_powerfactor_cache)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       P/home/dcms/DCMS/lib/python3.12/site-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      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      d      i9C 
   i''  l    d(	 r9   c                      t        dd      S )Nr9   r   r:   rA   r?   <lambda>z#test_multiplicity.<locals>.<lambda>O       |Aq1 rA   c                      t        dd      S )Nr9   r8   rU   r:   rA   r?   rV   z#test_multiplicity.<locals>.<lambda>P   rW   rA   c                      t        dd      S )N?r8   rU   r:   rA   r?   rV   z#test_multiplicity.<locals>.<lambda>Q       |C3 rA   c                      t        dd      S )Nr8   r   rU   r:   rA   r?   rV   z#test_multiplicity.<locals>.<lambda>R   rW   rA   c                      t        dd      S )NrZ   r   rU   r:   rA   r?   rV   z#test_multiplicity.<locals>.<lambda>S   r[   rA               1   	   )ranger   r4   
ValueErrorr
   )bis     r?   test_multiplicityrj   D   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   r`         r^   $   0   <   H   `   )facr   r   )r;   ri   s     r?   test_multiplicity_in_factorialru   ]   s9    D	A2 HAq!%>q$%GGGGH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 dD ]  } t        dd      D ]  }t        | |z        | |fk(  sJ | dz  rt        | |z  d      | |fk(  sJ | d	k(  rt        | |z  d	      | |fk(  sJ t        d
| |z  z        dk(  sJ | |z  dvsnt        | |z  dz         dk(  sJ t        | |z  dz
        dk(  rJ   t        dd      D ]h  } t        dd      D ]W  }t        | |      }|dk(  rt        d| z  d
|z  z        dk(  r,J t        d| z  d
|z  z        d| |z  z  d
||z  z  z  |fk(  rWJ  j y )Nr   Fr9   r8   ra   )	r8   ra      rm   r_   rn      i   飆 rQ   )next_prz   e   )   rd   rS   rw   )r2   rf   r   )xygs      r?   test_private_perfect_powerr   c   s   !%%%!%%%!%%%!%%%1 9q# 
	9A!!Q$'Aq61111u%ad15!Q???F{%ad6:q!fDDD!#ad(+u444!t6!%adQh/5888%adQh/5888
	99 1b\ Uq" 	UAAq	AAv%adS!Vm4===%adS!Vm4QTS1a4[9PRS8TTTT	UU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/z        t	        d       dz  dfk(  sJ t        t	        d      dz        dk(  sJ t        d0      d1k(  sJ t        d0d      d2k(  sJ t        d0d3g      d1k(  sJ d4}t        |      d5k(  sJ t        |d      d6k(  sJ t        |dd"gd7      d8k(  sJ t        |dd"gd      d6k(  sJ t        |dg      dk(  sJ t        |dd3g      d5k(  sJ t        |dd9g      dk(  sJ t        |d:g      dk(  sJ t        |dg      d6k(  sJ t        |dz         dk(  sJ t	        d      d;z  t	        d      d	z  z  }t        |      t	        d<      dz  d	fk(  sJ t        |       t	        d=       dz  dfk(  sJ t        |d      t	        d>      d?z  dfk(  sJ t        |dd"g      t	        d>      d?z  dfk(  sJ t        |d"dg      t	        d=      dz  dfk(  sJ t        |d"dgd      t	        d=      dz  dfk(  sJ t        |g d@d      t	        d>      d?z  dfk(  sJ t        | d"dgd      t	        d=       dz  dfk(  sJ t        t	        d       d/z        t	        d       dz  dfk(  sJ t        dA      dBk(  sJ t        dC      dDk(  sJ t        t	        dE      dFz        t	        d/      d#z  dfk(  sJ t        t        dd      dz        t        j                  dfk(  sJ t        t        dGd      dz        dGt        j                  z  dfk(  sJ y )HNc                      t        d      S )Ng?)r   r:   rA   r?   rV   z$test_perfect_power.<locals>.<lambda>~   s    }S1 rA   r   Fr9   r8   ra   r`   r8   r8         )rw   r8            )r   r      ('w_ r_   )r   r_   rn   )r   rn   '  )r8   r   rd   c   rq   rS   i@  )big順 )rS   r   顆 )rS   r   io  rw   Q   )factori/  )rx   ra   ia  i"  i`  i      i)re   ra   r}   lI5 )rx   )ira   rx   lu%mwN$" )irx   )l ra   T)irw         F          l         i  )r8   rw   r_   l   u%mwN$" )ra   rq   laKq_Gflm]f )=   i   i r   )r4   rg   r   r   r   r
   Half)tdr>   r;   rs        r?   test_perfect_powerr   }   sq   
: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	; %%%'''!A$q!qteAgq\1111a E))) H,,,U+z999"&(222Ay(((&*::::QF-===QF.2BBBBQC E)))QG$	111QG$---RD!U***QC $4444Q5(((	!aduo-A"	2...!!D'Aq 1111&1[>D+@!*DDDDQF#+(=q'AAAAQF#$!Q'7777QF.1T7Q;2BBBBI51ant6KQ5OOOO!aV/QtWHqL!3DDDD!A$#1	1~555"g---"h...6W,-!A$r'1===!Q*+{:::"a!+,AFFA>>>rA   c                  6   t        j                          t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        dt         _        t        dd      D ]  } d	t         d	| z  <    t        t               dk(  sJ d	t         _        t        dd      D ]  } d	t         d	| z  <    t        t               d	k(  sJ dt         _        t        t               dk(  sJ d
t         _        t        j                          d	t         d<   t        j                  d      d	k(  sJ t        j                  d      J t         d   d	k(  sJ t        t        d        t         d= t        t               dk(  sJ t        t        d        t        j                  dd	dg       t        t               dk(  sJ t         d   d	k(  sJ dD ]  }t        |       |t         v rJ  t        j                          d
t         _        y )Nc                  .    t        j                  dd      S )Nr9   rw   r3   __setitem__r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>   s    |771= rA   c                  .    t        j                  dd      S )NrS   r9   r   r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>       |77A> rA   c                  .    t        j                  dd      S NrS   r   r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>   s    |77B? rA   c                  .    t        j                  dd      S )NrS   ra   r   r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>   r   rA   c                  .    t        j                  dd      S )NrP   r`   r   r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>   r   rA   ra   r8   rS   rw   rl   (   rP   c                      t         d   S r   )r3   r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>   s    \"- rA   r   c                  ,    t        j                  d      S )Nr   )r3   __delitem__r:   rA   r?   rV   z#test_factor_cache.<locals>.<lambda>   s    \55b9 rA   rQ   )ʚ;l   rW )r3   cache_clearr4   rg   maxsizerf   lengetKeyErroraddr   )ri   r;   s     r?   test_factor_cacher      s   
:=>
:>?
:?@
:>?
:>?L1b\ QqS|!!!L1b\ QqS|!!!L|!!!LLB1$$$B'''q   
8-.R|!!!
89:S1a&!|!!!!!!, !!L   !
 L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   ra     r   r9   rc   re   )rc   r8   ir`   r8   ~   )r8   ra   r_   rm   iZ )ra   r_      Q  iA)9  I  l           )/    Q9ct rS   &   )ra      l   vudl   qWV[{l   ,E )ra   rw   r   +       !  l   P )r   r   r   l   UW:xa )i+	  i  i  Tmultiple)rc   r8   r8   r8   r8   r   )r8   r8   r8   ra   )r8   ra   ra   r_   )r8   r8   r8   r8   r8   r8   ra   r   )ra   r_   r   r   r   r   r   r   r   F)evaluater_   )r8   ra   rw   r_   rx   r   ra   )r8   ra   rw   r_   r   r   rP      r}   )r8   ra   rw   r_   r   r   r      rR   r   rd   )	r8   ra   rw   r_   r   r   r   r   rR         l   ('w_ iiz     rl            rq   )r8   ra   r   r   '  i  l   |+^A*\,	Mi>)r8   rw   I      WmW l   cj>g r   r   )	use_triali`  )seed)limit90  )ra   rw   i7  )i  ra   rn   r^   )r8   rx      |   )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   )arh   s   r?   rV   z test_factorint.<locals>.<lambda>O  s    y1a'@ rA   c                      t        d      S )Nr`   )r   r:   rA   r?   rV   z test_factorint.<locals>.<lambda>Q  
    {1~ rA   c                      t        d      S )Nra   r   r:   rA   r?   rV   z test_factorint.<locals>.<lambda>R  r   rA   c                      t        dd      S )NrS   r8   )Br   r:   rA   r?   rV   z test_factorint.<locals>.<lambda>S  s    {23 rA   i   im  zwith primesc                      t         d      S r   r   r;   s   r?   rV   z test_factorint.<locals>.<lambda>V  s    Ia,C rA   c                  4    t        t        d      dz  d      S )Nr   i  r9   r   )r   r   r:   rA   r?   rV   z test_factorint.<locals>.<lambda>W  s    Ii.t3Q? rA   c                  $    t         dz  d      S )Nra   r9   r   r   r   s   r?   rV   z test_factorint.<locals>.<lambda>Z  s    IadA. rA   c                  $    t        d z  d      S )Nr8   r9   r   r   r   s   r?   rV   z test_factorint.<locals>.<lambda>[  s    Iac1- rA   1000c                       t         dd      S )Nrl   r9   r   r   r   r   s   r?   rV   z test_factorint.<locals>.<lambda>`      Yqa%H rA   2001c                       t         dd      S )Nr   r9   r   r   r   s   r?   rV   z test_factorint.<locals>.<lambda>f  r   rA   c                       t         dd      S )Ni  r9   r   r   r   s   r?   rV   z test_factorint.<locals>.<lambda>h  s    	!43 rA   Pollardi  c                      t         d      S r   r   r   s   r?   rV   z test_factorint.<locals>.<lambda>l  s    Ia+ rA   c                      t        d      S )Ng      @r   r:   rA   r?   rV   z test_factorint.<locals>.<lambda>r  s
    y~ rA   z
2**10*3**3)r`   rn   )r   r   rt   rH   rF   r@   r   rf   r   r   r   intr6   r4   rg   countstrr   )ep1p2p3sansr   rh   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                  r   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        t        dd            t        u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 )Nrc   r9   r   r8   ra   r   rS   r9   r8   rw   rS   rQ   )	r9   r8   r`   rw   rS   rP   r   2   rQ   r|   T	generatorrm   r`   rn      rq   r^   r_   )r   typelistr   r:   rA   r?   test_divisors_and_divisor_countr  z  sa   B<A3A;"A;1#A;1a&   A;1a&   B<Ar7"""B<=(((C=====C=QH$$$d+,D888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        t        dd            t        u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 )Nrc   r   r9   r8   ra   r   rS   )r9   r8   rw   rQ   )r9   r8   r`   rw   rS   rP   r   r  r   Tr  ro   r}   r^   r_   )r   r  r  r%   r:   rA   r?   -test_proper_divisors_and_proper_divisor_countr    s/   2"$$$1###1###1!$$$1!$$$21#%%%2)+++3#????:&1#---T234???"a'''#q((("a'''#q(((&!+++rA   c                     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        t        dd            t        u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 )Nrc   r9   r   r8   ra   r   rS   r  rQ   )r9   r`   r   rQ   r|   rl   )r9   r}   }   rl   Tr  rm   r`   rn   r
  r}      r   )r"   r  r  r$   r:   rA   r?   !test_udivisors_and_udivisor_countr    sj   R=QCQ<2Q<A3Q<Aq6!!!Q<Aq6!!!R=QG###R=M)))S>_,,,S>aX%%%T?////	!t,-T999!!!!""""!!!!!!!!""""#!###'"b(((rA   c            	          t        t        d            j                  t        t        t        d                        } | h dk(  sJ y )Nr`   r8   >   r9   r8   r`   )setr   unionr	   r   s    r?   test_issue_6981r    s5    HQKs8GAJ#789A<<rA   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 )N   )r9   r8   r`   r_   r   r  ry   r9   )r9   ra   rw   rx   r_      #   ry   r   )r   r  r:   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   rm   r`   )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 )Nrc   r  )r9   r8   r`   r_   r   ry   T)r9   ra   rw   rx   r_   r  r  )r   r  r:   rA   r?   test_proper_divisorsr#    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 )Nrm   ra   l   r   )r%   r:   rA   r?   test_proper_divisor_countr&    s(    "a'''$***rA   c                  v   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 t        t        dd            t        usJ y )Nrc   r   r8   r   )ra   r`   rd      )	r8   rw   rm   r   r   r   r   _      r   )	r8   rm   r_   rS   r^   in  i  iJ  i&   i   i   c              3       K   | ]  }|  y w)Nr:   ).0r~   s     r?   	<genexpr>z$test_antidivisors.<locals>.<genexpr>  s     4!4s   ry   r9   )	r8   rm   rS   r   r   r   r^   *   r   Tr  )r   sortedr  r  r:   rA   r?   test_antidivisorsr0    s    r!!!s"""y((( BBBB"KKKKF8+++4\%344*+ + +?b   Q$/0<<<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   rc   r   r9   rP   ra   r   rw   r   r_   r
  rm   r^   )r   r:   rA   r?   test_antidivisor_countr2    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      )ra   r   i(  )r>   ))ra   )r8   r8   r`   )r   r9   rw   rw   )r   )r9   r   r   rc   )ra   )r8   r8   r8   r   )r9   ra   rd   r   r5  )power)r6  r8  r7  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_pr<    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   r:  r.  Tz2**1*3**1*7**1r   Fi  rc   ir   )ra   r8   )r_   r8   )r   r  r   r   r   Oner   args)forty2nos     r?   test_visual_factorintrB    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 )Nrn   r9   Tr:  z	2**2*3**11r   r   z
5**2/(2*7)ird   z-1*5**2/(2*3**2*7)r   )r8   r8   ra   r_   rw   rc   ra   )r   r   r   r
   r   r:   rA   r?   test_factorratrE    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   Tr:  r9   Fr8   r   r   r`   r   rm   )r`   r8   r   )r   r   r   rF   r   )smfir;   r   r>   r   sthrA  kvs              r?   test_visual_iorM    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 rS   i{  iD  r9   i`  ra   ro   l      P ~cegr   r   i4 r   rm   )r!   r:   rA   r?   	test_corerO  A  sv    u$$$<1a=Bu$$$<21:??rA   c                     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 g d
} t        | d      D ]  \  }}t        |d      |k(  rJ  g d}t        |d      D ]  \  }}t        |d      |k(  rJ  g d}t        |d      D ]  \  }}t        |d      |k(  rJ  y )Ni[  i  r   r   r9   r8   ilR+ra   l   ` A[5)*r9   r8   r8   ra   r8   r`   r8   r`   ra   r`   r8   rm   r8   r`   r`   rw   r8   rm   r8   rm   r`   r`   r8   r}   ra   r`   r`   rm   r8   r}   r8   rm   r`   r`   r`   rd   r8   r`   r`   r}   r8   r}   )!r9   ra   r`   r_   rm   rn   r}   rx   r   r   rn   r  r   r   r   r   r   '   rP   r.  r   ro   r   rq   r   r.  r   8   r^   rr   r   ?   rp   )r9   rw   rS   r     r  r  U   [      z   r        i  iU  i"  i  ij  i"  r   ib  i  R  i  r[  i4  i  )r    	enumerate)A000005r;   valA000203A001157s        r?   test__divisor_sigmara  J  s   % E)))%#r)))%#u,,,%#y000%#~555NGGQ' +3a#s***+OGGQ' +3a#s***+QGGQ' +3a#s***+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        t        d	        t        t        d
        y )Nr9   r8   r`   r_   rS   Y   r   iT  c                      t        d      S )N4   r(   r:   rA   r?   rV   z.test_mersenne_prime_exponent.<locals>.<lambda>c  s    6r: rA   c                      t        d      S )Nr   rf  r:   rA   r?   rV   z.test_mersenne_prime_exponent.<locals>.<lambda>d  s    6q9 rA   )r(   r4   rg   r:   rA   r?   test_mersenne_prime_exponentrh  ^  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 t        d
      du sJ y )NiFrm   Trx   r  i  i  i  r   )r)   r:   rA   r?   test_is_perfectrj  g  s    b>U"""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 )NrS   Frn   Tr   r  i  )r*   r:   rA   r?   test_is_abundantrl  r  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 )NrS   Tr   rR  FrP   ro   )r+   r:   rA   r?   test_is_deficientrn  z  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"  )r,   r:   rA   r?   test_is_amicablers    sA    sC E)))sC D(((tT"e+++rA   c                  z    g d} t        dd      D ]  }t        |      || v k(  rJ  | D ]  }t        |      rJ  y )N)1  Q  i  i	  i  i  i"  iY)  i=  ir  iQ  iA  i  i  i  ia& i r9   i  )rf   r-   )A002997r;   s     r?   test_is_carmichaelrx    sS    HG1d^ 2QAL1112  Q rA   c                      t        dd      g k(  sJ t        dd      dgk(  sJ t        dd      t        dd      k(  sJ t        t        d        t        t        d        y )Nr   ru  i2  rv  c                      t        dd      S )Nre   r8   r.   r:   rA   r?   rV   z7test_find_carmichael_numbers_in_range.<locals>.<lambda>      ?AF rA   c                      t        dd      S )Nr   r8   r{  r:   rA   r?   rV   z7test_find_carmichael_numbers_in_range.<locals>.<lambda>  r|  rA   )r.   r4   rg   r:   rA   r?   %test_find_carmichael_numbers_in_ranger~    sc    +As3r999+C5#>>>+C6:Z[^`c:dddd
:FG
:FGrA   c                  j    t        d      g k(  sJ t        d      dgk(  sJ t        d      ddgk(  sJ y )Nr   r9   ru  r8   rv  )r/   r:   rA   r?   test_find_first_n_carmichaelsr    sA    #A&",,,#A&3%///#A&3+555rA   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   rn   r}   
  rS   rd   r   r   iec                      t        dd      S Nr   re   r0   r:   rA   r?   rV   ztest_dra.<locals>.<lambda>      s2r{ rA   c                      t        dd      S )Ng3333338@rw   r  r:   rA   r?   rV   ztest_dra.<locals>.<lambda>      s4| rA   )r0   r4   rg   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   rn   r_   r  rS   r8   r   rx   i rm   c                      t        dd      S r  r1   r:   rA   r?   rV   ztest_drm.<locals>.<lambda>  r  rA   c                      t        dd      S )Ng333333'@rd   r  r:   rA   r?   rV   ztest_drm.<locals>.<lambda>  r  rA   )r1   r4   rg   r:   rA   r?   test_drmr    sf    r2;!tR=Aq":??vr?a
:*+
:+,rA   c                  ,   ddl m}   |        5  t        d      dk(  sJ 	 d d d         |        5  t        d      dk(  sJ 	 d d d         |        5  t	        d      dk(  sJ 	 d d d         |        5  t        d      dk(  sJ 	 d d d         |        5  t        d      dk(  sJ 	 d d d         |        5  t        d      dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   [xY w# 1 sw Y   y xY w)Nr   warns_deprecated_sympyra   r9   r8   r`   )sympy.testing.pytestr  r&   r'   r   r   r   r#   r  s    r?   *test_deprecated_ntheory_symbolic_functionsr    s   ;		! qzQ		! "!}!!!"		! qzQ		! 'q!Q&&&'		! %Q1$$$%		! &a A%%%& & " " ' '% %& &sF   CCC&1C2C>3D
CC#&C/2C;>D
DN)r:   r9   )csympy.core.containersr   sympy.core.mulr   sympy.core.powerr   sympy.core.singletonr   (sympy.functions.combinatorial.factorialsr   rt   sympy.core.numbersr	   r
   sympy.external.gmpyr   sympy.ntheoryr   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+   r,   r-   r.   r/   r0   r1   r2   r3   r  r4   r5   sympy.utilities.iterablesr6   r@   rH   rj   ru   r   r   r   r  r  r  r  r  r  r  r!  r#  r&  r0  r2  r<  rB  rE  rM  rO  ra  rh  rj  rl  rn  rs  rx  r~  r  r  r  r  r:   rA   r?   <module>r     s4   &    " E 0 #         
F F F F F F F . -*812HU4P?f& R }+ }+@(,,&).
1!
J+

=);
2K ")J+(;&$%, H6--&rA   