
    g&                         d dl m Z mZ d dlmZ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 d dlmZ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 Z$dS )    )bisectbisect_left)mobiustotient)sieveSieve)
isprime	randprime	nextprime	prevprime
primerangeprimepiprime	primorial	compositecompositepi)cycle_length_primepi)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    i9k     iٗ  #  iqp a  imb i iͱ
iiszyc                       t          d          S Nr   r        ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/ntheory/tests/test_generate.py<lambda>ztest_prime.<locals>.<lambda>       uQxx r*   i  i
  c                       t          d          S Nr(   r)   r*   r+   r,   ztest_prime.<locals>.<lambda>       uRyy r*   )r   r   
ValueErrorr   extendr)   r*   r+   
test_primer4      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          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 )Nr0   r   r   r   r   r   r   r      r    >   r!   f   r"   i  r#   i4  r$   ih  r%   i
   iW ein    j i  i/  )r   r   r3   r)   r*   r+   test__primepir=       s   B<<1A;;!A;;!A;;!B<<1B<<2C==BC==CD>>S    D>>S    D>>T!!!!E??d""""E??g%%%%I(****J9,,,,	LD>>S      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+   r,   z test_composite.<locals>.<lambda>F       y|| r*   )sympy.ntheory.generater   _resetr   r3   r   r2   r?   s    r+   test_compositerK   4   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  r9   iPr:   i؇Gr;   l   >e i	  i  )r   r   r3   r)   r*   r+   test_compositepirO   I   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            	      r   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 g d}t          t          |          dz
            D ]{}t          dt          |          |z
            D ]X}t          ||         |          |||z            k    sJ d|k     r+t          ||         dz
  |          |||z   dz
           k    sJ Y|t          t          d            t          t          d            t	          d          dk    sJ t	          ddz            ddz  dz
  k    sJ t          t          d            t          t          d            dD ]p}t          |          }t          |j        d         dz   |j        d         dz   dz  d          D ]z}t          |dz   |j        d         dz   dz            D ]S}t          |                    ||                    }|t          ||          t          ||                   }	||	k    sJ T{t          |j        d         |d         dz
  d          D ]}
t          |          }|                    |
           t          |j                  |d t          ||
                   k    sJ |                    |d                    t          |j                  |k    sJ rt           | 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/                    d0 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 d1k    sJ  | j        d 2           t           | j        dd	                    g d3k    sJ t           | j        d4d5                    d6 t          d4d5          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 d7k    sJ t          t#          dd                    g d$k    sJ t          t#          d4d5                    g d8k    sJ t                      }t          d9d:d;          D ]d}t          dd<d=          D ]P}t          |                    |||z                       }t          t#          |||z                       }	||	k    sJ Qet                      } | j        d !            | j        d	           t          d>          D ]]}t          |d>          D ]J}t          |                    ||                    }t          t#          ||                    }	||	k    sJ K^ | j        d/           d?D ]I\  }}t          t#          ||                    t          |                    ||                    k    sJ J | j        d !            | j        d@           t          | j                  t          t)          | j                            k    sJ t                      }|d         d&k    sJ t          dd          dk    sJ t          t          dA            t          t          dB            t+          ddg          dCu sJ dD }t-          t/          |dE                    dFk    sJ t          t/          |dEd G                    g dHk    sJ t-          t/          |dEdI                    dJk    sJ t          t/          |dEdd K                    g dLk    sJ  | j        dM           t          dN          dOk    sJ t	          dP          dQk    sJ t          t          dR            t          t          dS            d S )TNr   r?   r   r   r            r         rC   	   r0      r   Z   a   rB   rM   y   )>r   r   r   rR   r   rT   rV   rU   rX      r   %   rD   +   /   5   ;   =   C   G   I   O   S   Y   rZ   e   g   k   m   q                                                               rN            i  i  r   i  i  i  i  i%  r   c                  "    t          dd          S )Nr   r   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>}       yA r*   c                  "    t          dd          S )Nr   r0   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>~   s    yB// r*   rh   c                       t          d          S r'   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>   r-   r*   c                       t          d          S r/   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>   r1   r*   )r   rB   r   i@B )sieve_intervalTr(   )r   r   r   rR   r      r   r   r   rR   r\   )	r   r   r   rR   r   rT   rV   rU   rX   "   )r   r   r   rR   r   rT   rV   rU   rX   r\   r      )
r@   r   rA   r@   rA   r@   rB   r@   rS   rA   r   )
r   r   r@   r   rA   r@   rA   r@   rB   r@   i    c                 ,    g | ]}t          |          S r)   r   .0xs     r+   
<listcomp>z!test_generate.<locals>.<listcomp>   s    2X2X2X!71::2X2X2Xr*   )
r0   r   r0   r   r   r   r0   r   r0   r   r   )
r0   r   r0   r   r0   r   r   r   r0   r   i  iL  c                 ,    g | ]}t          |          S r)   r   r   s     r+   r   z!test_generate.<locals>.<listcomp>   s    2X2X2X6!992X2X2Xr*   )r   r   r   )i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is     ))i  iO  )i&  iJ )r<   i1u  )i iQi )iM iU i c                       t          d          S r'   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>   s    wqzz r*   c                       t          d          S r'   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>   rH   r*   Fc                     | dz  dz   dz  S )Nr   r   3   r)   )is    r+   r,   ztest_generate.<locals>.<lambda>   s    adQh"_ r*   r@   )rA   r   )values)r@   rV   #   r   r         ,   2   r   r   r   r   )nmax)r   N)r   r   )r@   rV   r   r   r   r"   i  i  ir  io  c                       t          d          S Nr   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>   rH   r*   c                       t          d          S )NrQ   r   r)   r*   r+   r,   ztest_generate.<locals>.<lambda>   s    y}} r*   )rI   r   rJ   r   r   extend_to_no_listrangelenr   r2   r   list_primeranger   r   r3   r   totientrangemobiusrangesetr   nextr   )r   	primelistr   jr   sheadtailABkabfuncs                 r+   test_generater   \   s   ,,,,,,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#....9 9 9I 3y>>A%&& N Nq#i..1,-- 	N 	NAYq\1--1q51AAAAA1uu 1!11551q5199MMMMM	N :..///
://000R==BRVR"----
:''(((
:(()))0 . .000!'"+/AGBK!Oa+?CC 	 	DdQhq1(<==  tT2233fY55k)T6R6RRSAvvvvv qwr{IbMA$5q99 	. 	.A^444AHHQKKK==I.Cvi/C/C.C$DDDDDHHYr]###==I-----	.   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ELtEL3ZZ  q# 	 	AQ\\!Q''((AZ1%%&&A66666	 EL B B1 Jq!$$%%all1a.@.@)A)AAAAAAELtELu{s3u{#3#3444444AR5B;;;;Q??a
:))***
:++,,,a!::$$DT1%%&&&0000T1T222337778 8 8 8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 )NrB   r   r   r   r   c                  "    t          dd          S )Nir   r
   r)   r*   r+   r,   z test_randprime.<locals>.<lambda>   s    yb11 r*   c                  "    t          dd          S )Nir   r   r)   r*   r+   r,   z test_randprime.<locals>.<lambda>   s    ya00 r*   c                  "    t          dd          S )NrC      r   r)   r*   r+   r,   z test_randprime.<locals>.<lambda>   s    yR00 r*   c                  "    t          dd          S )Nr   r   r   r)   r*   r+   r,   z test_randprime.<locals>.<lambda>   r   r*   c                  "    t          dd          S )Nr   r   r   r)   r*   r+   r,   z test_randprime.<locals>.<lambda>   r   r*   )d   i,  i  i )r
   r   r2   r	   )r   r   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   )nthrA   r@   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   r   c                  *    t          j        d          S r   )r   searchr)   r*   r+   r,   ztest_search.<locals>.<lambda>   s    u|A r*   )r   r   r2   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   rB   c                 (    g | ]}t           |         S r)   r?   r   s     r+   r   z$test_sieve_slice.<locals>.<listcomp>  s     @ @ @aq @ @ @r*   r   c                 (    g | ]}t           |         S r)   r?   r   s     r+   r   z$test_sieve_slice.<locals>.<listcomp>  s    "E"E"E58"E"E"Er*   r   r   c                       t           d d         S )Nr   r?   r)   r*   r+   r,   z"test_sieve_slice.<locals>.<lambda>  s    uRaRy r*   c                      t           d         S r'   r?   r)   r*   r+   r,   z"test_sieve_slice.<locals>.<lambda>  s
    uQx r*   c                       t           dd         S )Nr   r   r?   r)   r*   r+   r,   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 )NrR   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*   c                      ddl m}   |             5  t          d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   warns_deprecated_sympy)sympy.testing.pytestr   r   r   s    r+   *test_deprecated_ntheory_symbolic_functionsr     s    ;;;;;;			!	!  qzzQ                 s   599N)%r   r   %sympy.functions.combinatorial.numbersr   r   rI   r   r   sympy.ntheoryr	   r
   r   r   r   r   r   r   r   r   r   r   sympy.ntheory.primetestr   r   r   r4   r=   rK   rO   r   r   r   r   r   r   r   r   r)   r*   r+   <module>r      s   & & & & & & & & A A A A A A A A 1 1 1 1 1 1 1 1B B B B B B B B B B B B B B B B B B B B B B B B 9 9 9 9 9 9 9 9 & & & & & & ' ' ' ' ' '* * *(! ! !(- - -*% % %&B. B. B.J3 3 3"$ $ $0 0 0+ + +& & &" " "
    r*   