
    Rie                         d dl mZmZmZ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 d dl	mZ d dlmZ d d	lm Z  d
 Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+dS )    )IRationalnanzoo)S)Symbol)sieveSieve)limit)isprimetotientmobius	randprime	nextprime	prevprime
primerangeprimepiprime	primorial	compositecompositepireduced_totient)cycle_length)mr)raisesc                     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 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          t          d            t          j        d           t          d          dk    sJ t          t          d            d S )N                  9   i  (  i  /  i    i9k     iٗ  #  iqp a  imb i iͱ
iiszyc                       t          d          S Nr   r        Alib/python3.11/site-packages/sympy/ntheory/tests/test_generate.py<lambda>ztest_prime.<locals>.<lambda>   s    uQxx r.   i  i
  c                       t          d          S )Nr,   r-   r.   r/   r0   ztest_prime.<locals>.<lambda>   s    uRyy r.   )r   r   
ValueErrorr	   extendr-   r.   r/   
test_primer5      sr   88q====88q====88r>>>>99????99::::;;%;;%;;%<<6!!!!??i''''??j((((
:''(((	L::
:(()))))r.   c                     t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          t          d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 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          j        d           t          d          dk    sJ t	          d           } t          |                               | d          dk    sJ t	          d!d"#          }t          |                              |d          dk    sJ t          t          j                  t          j        u sJ t          t          j                  dk    sJ t          t          |           | d$          d%k    sJ t          t          d&            t          t          d'            t          t          d(            t          t          d)            d S )*Nr2   r   r   r      g      @r    r   r!   r#      r$   >   r%   f   r&   i  r'   i4  r(   ih  r)   i
   iW ein    j ii  i/  nrT)reald      c                  *    t          t                    S Nr   r   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>A   s    wqzz r.   c                  0    t          dt          z             S Nr   rE   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>B   s    wq1u~~ r.   c                  *    t          t                    S rD   )r   r   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>C       ws|| r.   c                  *    t          t                    S rD   )r   r   r-   r.   r/   r0   ztest_primepi.<locals>.<lambda>D   rI   r.   )r   r   r	   r4   r   subsr   InfinityNegativeInfinityr   r   r3   )r>   r?   s     r/   test_primepirN   !   s   2;;!1::????1::????8Aq>>""a''''3<<11::????2;;!2;;"3<<23<<34==C4==C4==D    5>>T!!!!5>>W$$$$9)))):)++++	L4==CsA1::??1a  A%%%%sA1::??1a  A%%%%1:!*,,,,1%&&!++++Q$$****
:))***
:--...
:++,,,
:++,,,,,r.   c                     ddl m}   | 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 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  | j        d           t          d          dk    sJ t          d          dk    sJ t          t          d            d S ) Nr   r	   r      r      r    
   r!      )   :   r#   P   r$   ir  r%   i  r&   i  r'   i  r(   i(  r)   im  i  i  i
  i  c                       t          d          S r+   )r   r-   r.   r/   r0   z test_composite.<locals>.<lambda>Y       y|| r.   )sympy.ntheory.generater	   _resetr   r4   r   r3   rP   s    r/   test_compositer\   G   s   ,,,,,,ELNNNQ<<1Q<<1Q<<2R==BR==BR==BS>>S    S>>S    T??d""""T??d""""T??e####Uu$$$$ELT??d""""T??d""""
:++,,,,,r.   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 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          j        d           t          d          dk    sJ d S )Nr   r   r   r    r!   r#   (   r$      r%   i  r&   i	
  r'   i  r(   i  r)   iV  r;   iPr<   i؇Gr=   l   >e i	  i  )r   r	   r4   r-   r.   r/   test_compositepir`   \   s   q>>Qq>>Qq>>Qr??ar??b    ss""""ss""""t$$$$t$$$$t$$$$u&&&&u))))y!!Y....z""j0000	Lt$$$$$$r.   c            	      $   ddl m}   | 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 t	          d          dk    sJ t	          d          dk    sJ  | j        d           | j        d         dk    sJ | j        d         dk     sJ d| v sJ t          d          dk    sJ t          ddz            ddz  dz   k    sJ t	          d          dk    sJ t	          ddz            ddz  dz
  k    sJ t           | j        dd                    g k    sJ t           | j        dd                    ddgk    sJ  | j        d           t           | j        dd	                    g dk    sJ t           | j        d	                    g dk    sJ t           | j        d                    g dk    sJ t           | j        d                    g k    sJ t           | j        d                    g d k    sJ t           | j        d!                    g d"k    sJ t           | j	        dd#                    g d$k    sJ  | j        d%           t           | j	        dd	                    g d&k    sJ t           | j	        d'd(                    d) t          d'd(          D             k    sJ t           | j	        dd                    g k    sJ t           | j	        dd                    dgk    sJ t           | j        dd#                    g d*k    sJ  | j        d+           t           | j        dd	                    g d,k    sJ t           | j        d-d.                    d/ t          d-d.          D             k    sJ t           | j        dd                    g k    sJ t           | j        dd                    dgk    sJ t          t          dd                    g k    sJ t          t          dd                    g d0k    sJ t          t          dd                    g dk    sJ t          t          d-d.                    g d1k    sJ t                      }t          d2d3d4          D ]d}t          dd5d6          D ]P}t          |                    |||z                       }t          t          |||z                       }||k    sJ Qet                      }|d         dk    sJ t          dd          dk    sJ t          t          d7            t          t          d8            t          t          d9            t          ddg          d:u sJ d; }t!          t#          |d<                    d=k    sJ t          t#          |d<d>                    g d?k    sJ t!          t#          |d<d@                    dAk    sJ t          t#          |d<ddB                    g dCk    sJ  | j        dD           t          dE          dFk    sJ t	          dG          dHk    sJ t          t          dI            t          t          dJ            d S )KNr   rP   r   r   r    r7         r!         rT   	   r2      r"   Z   a   rS   r^   y   Y   r   Tr,   )r   r   r    r7   r!      r   r   r    r7      )	r   r   r    r7   r!   rd   rf   re   rh   "   )r   r   r    r7   r!   rd   rf   re   rh   rp   r"      )
rQ   r   rR   rQ   rR   rQ   rS   rQ   rc   rR   r   )
r   r   rQ   r   rR   rQ   rR   rQ   rS   rQ   i    c                 ,    g | ]}t          |          S r-   rs   .0xs     r/   
<listcomp>z!test_generate.<locals>.<listcomp>   s    2X2X2X!71::2X2X2Xr.   )
r2   r   r2   r   r   r   r2   r   r2   r   r   )
r2   r   r2   r   r2   r   r   r   r2   r   i  iL  c                 ,    g | ]}t          |          S r-   rz   rv   s     r/   ry   z!test_generate.<locals>.<listcomp>   s    2X2X2X6!992X2X2Xr.   )r   r   r    )i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is  c                       t          d          S r+   rs   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   s    wqzz r.   c                       t          d          S r+   )r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   s    q11 r.   c                       t          d          S r+   r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   rY   r.   Fc                     | dz  dz   dz  S )Nr   r   3   r-   )is    r/   r0   ztest_generate.<locals>.<lambda>   s    adQh"_ r.   rQ   )rR   r   )values)rf   #   r   r          ,   2   r   r    r   r   )nmax)r    N)r   r   )rf   r   r   r    r   r&   i  i  ir  io  c                       t          d          S rG   r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   rY   r.   c                       t          d          S )Nrb   r   r-   r.   r/   r0   ztest_generate.<locals>.<lambda>   s    y}} r.   )rZ   r	   r[   r   r   extend_to_no_listlistr   totientrangerangemobiusranger
   r   r3   r   nextr   r4   )r	   sr   jABfuncs          r/   test_generater   o   s8   ,,,,,,ELNNNR==AQ<<1Q<<1R==BQ<<1Q<<1R==BR==BR==BEq;r?b    ;r?R;;;;R==BRVR#....R==BRVR"----  Q''((B....  A&&''Aq61111ELt  B''((,<,<,<<<<<  $$%%)9)9)99999  ##$$4444  $$%%++++  $$%%)I)I)IIIII  $$%%)Q)Q)QQQQQ""1b))**.N.N.NNNNNEL""1b))**.M.M.MMMMM""3--..2X2XuSRVGWGW2X2X2XXXXX""1a(())R////""1a(())aS0000!!!R(())-O-O-OOOOOEL!!!R(())-O-O-OOOOO!!$--..2X2XeDRVFWFW2X2X2XXXXX!!!Q''((B....!!!Q''((QC////
2q!!""b((((
1a  !!YYY....
1b!!""lll2222
4&&'' ,, ,, ,, , , , ,A2tS!!  q$%% 	 	AQ\\!QU++,,AZ1q5))**A66666	 	AR5B;;;;Q??a
:))***
:11222
:++,,,a!::$$DT1%%&&&0000T1T222334445 5 5 5T11---..);;;;T11T:::;;   ELT??d""""T??d""""
:++,,,
:,,-----r.   c                  0   t          dd          J t          dd          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            t          t          d	            t          t          d
            t          t          d            dD ]>} dD ]9}t          | | |z             }| |cxk    r	| |z   k     rn nt          |          sJ :?d S )NrS   r   r   r   r    c                  "    t          dd          S )Niro   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   s    yb11 r.   c                  "    t          dd          S )Nir   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   s    ya00 r.   c                  "    t          dd          S )NrT      r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   s    yR00 r.   c                  "    t          dd          S )Nr   r   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>       yA r.   c                  "    t          dd          S )Nr   r   r   r-   r.   r/   r0   z test_randprime.<locals>.<lambda>   r   r.   )rA   i,  i  i )r   r   r3   r   )abps      r/   test_randprimer      sW   R###Q###Q??aQ??aQ??a
:11222
:00111
:00111
:..///
:..///$ 3 3( 	3 	3A!QU##A####QU#####

####	33 3r.   c                      t          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 t          dd          dk    sJ d S )Nr   r   r   )nthrR   rQ   r   r-   r.   r/   test_primorialr      s    Q<<1QA!####Q<<1QA!####QA!######r.   c                      dt           v sJ dt           vsJ dt           vsJ ddz  t           vsJ t          t          d            d S )Nr   g @r   rt   c                  *    t          j        d          S rG   )r	   searchr-   r.   r/   r0   ztest_search.<locals>.<lambda>   s    u|A r.   )r	   r   r3   r-   r.   r/   test_searchr      s\    ::::eE>>>>d7%
:../////r.   c                     t           d         dk    sJ t          t           dd                   d t          dd          D             k    sJ t          t           ddd                   d t          ddd          D             k    sJ t          t           dd                   g dk    sJ t          t          d	            t          t          d
            t          t          d            d S )Nr    r!   rS   c                 (    g | ]}t           |         S r-   rP   rv   s     r/   ry   z$test_sieve_slice.<locals>.<listcomp>   s     @ @ @aq @ @ @r.   r   c                 (    g | ]}t           |         S r-   rP   rv   s     r/   ry   z$test_sieve_slice.<locals>.<listcomp>   s    "E"E"E58"E"E"Er.   r   rn   c                       t           d d         S )Nr    rP   r-   r.   r/   r0   z"test_sieve_slice.<locals>.<lambda>   s    uRaRy r.   c                      t           d         S r+   rP   r-   r.   r/   r0   z"test_sieve_slice.<locals>.<lambda>   s
    uQx r.   c                       t           dd         S )Nr   r    rP   r-   r.   r/   r0   z"test_sieve_slice.<locals>.<lambda>   s    uQqSz r.   )r	   r   r   r   
IndexErrorr-   r.   r/   test_sieve_slicer      s    8r>>>>ad @ @5B<< @ @ @@@@@a1f"E"EU1b!__"E"E"EEEEEac
|||++++
:(()))
:''(((
:))*****r.   c                      g } t           D ]}|dk    r n|                     |            | t          t           dd                   k    sJ d S )Nr7   r   r    )r	   appendr   )r   values     r/   test_sieve_iterr      s`    F  199EeT%!*%%%%%%%%r.   c                  f    dt          t                    v sJ dt          t                    v sJ d S )Nr	   r   )reprr	   r-   r.   r/   test_sieve_reprr      s6    d5kk!!!!d5kk!!!!!!r.   N),sympy.core.numbersr   r   r   r   sympy.core.singletonr   sympy.core.symbolr   rZ   r	   r
   sympy.series.limitsr   sympy.ntheoryr   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.ntheory.primetestr   sympy.testing.pytestr   r5   rN   r\   r`   r   r   r   r   r   r   r   r-   r.   r/   <module>r      s   6 6 6 6 6 6 6 6 6 6 6 6 " " " " " " $ $ $ $ $ $ 1 1 1 1 1 1 1 1 % % % % % %S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S / / / / / / & & & & & & ' ' ' ' ' '* * *(#- #- #-L- - -*% % %&S. S. S.l3 3 3"$ $ $0 0 0+ + +& & &" " " " "r.   