o
    8Va                     @   s   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 d dlmZ d dlmZ dd Zdd Zed	d
 Zdd Zdd Zdd ZdS )    )Sievesieve)mris_lucas_prp	is_squareis_strong_lucas_prpis_extra_strong_lucas_prpisprimeis_euler_pseudoprimeis_gaussian_prime)slow)Ic                   C   s6  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dks-J t dddks6J t dddks?J t dddksHJ t dddksQJ t dddksZJ t dddkscJ t dddkslJ t dddksuJ t dddks~J t dddksJ t dddksJ t d d!dksJ d S )"N	      TU     Fy                     7   o   s   r   1   u   U   T   W   X      '   M   i&     i"     i   i'     )r
    r)   r)   D/usr/lib/python3/dist-packages/sympy/ntheory/tests/test_primetest.pytest_euler_pseudoprimes	   s"   r+   c                   C   sd   t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t ddks0J d S )	Nr   F  T}*  r         r   r)   r)   r)   r*   test_is_extra_strong_lucas_prp   s   r1   c                  C   s   dd t ddD } t| dksJ dd | D g dksJ dd | D g d	ks,J d
d | D g dks9J tdd | D rDJ dd | D g dksQJ dd | D g dks^J dd | D g dkskJ d S )Nc                 S   s    g | ]}|d  rt |s|qS r   )r	   .0nr)   r)   r*   
<listcomp>&   s
    
ztest_prps.<locals>.<listcomp>r   順 inyc                 S      g | ]
}t |d gr|qS r2   r   r3   r)   r)   r*   r6   *       )i  i    I  i   i=  ir  i/  i  i  i  i# i: iM i%Y ib c                 S   r8   )r   r9   r3   r)   r)   r*   r6   -   r:   )r   i  ic  i  i   "  iY)  s0  i@  i!I  iK  i[  i{  i  ]  i  i  ia# i4 iQB iiW iY i} c                 S   r8   )E  r9   r3   r)   r)   r*   r6   1   r:   )1r         r   A   Q   r@   r   iW  i  iu  i  ie  i  i  r;   r<   iM  i  iu  i3  r=   r>   iq2  i:  i>  i1N  iV  iZ  iI`  iaa  ia|  i+  ig  iͨ  i  r?   iy  ie  i  iY  i  i  i  i i i+ iI2 iwO c                 s   s    | ]	}t |d gV  qdS )l   j_| Nr9   r3   r)   r)   r*   	<genexpr>8   s    ztest_prps.<locals>.<genexpr>c                 S      g | ]}t |r|qS r)   )r   r3   r)   r)   r*   r6   9       )9iC  iy  i  i%  i  S    io#  i#  r-   i,  i-  i_6  i9  >  iS?  iG  J  icJ  W  io[  _  ob  ie  ie  ij  i  i  i  铘  i#  i	  u  iC  i  i  i  i  i  i    i  i  i    E% i- i6 i7 i'D iI i/P i` iq iz | c                 S   rF   r)   )r   r3   r)   r)   r*   r6   A   rG   )rH   rI   r-   rJ   rK   rL   rM   rN   rP   rQ   rT   rU   c                 S   rF   r)   r0   r3   r)   r)   r*   r6   D   rG   )r,   i  rI   r-   iCm  is  ix  i{  rO   rR   rS   rT   )rangesumany)Zoddcompositesr)   r)   r*   	test_prps$   s   rY   c                  C   s  t  } | d t| dd}tdD ]}||v t|ks J qtds'J tds-J tds3J tds9J tds?J td	sEJ td
sKJ tdsQJ tdsWJ ttds_J tdseJ tdd d soJ tdd d syJ tdd d rJ tdrJ tdrJ tdrJ tdrJ tdrJ tdrJ tdrJ tdrJ ttdrJ ttdrJ td tdsJ tdrJ td rJ d S )!Nr7   r   i iͱ
l   {! l   \)l   yW-	l   GPFQw8 l   XFqb l   Ii|	3mV&> l   :_sh1S3b l	   #:gWj#0[ z
531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127l    Y   r   i_  iY  l   ;n>l   pl   He%Z	 l   y5D( l   --	l   q.;m l   7y_@I7 l   k$9H"YaR  
8038374574536394912570796143419421081388376882875581458374889175222974273765333652186502336163960045457915042023603208766569966760987284043965408232928738791850869166857328267761771029389697739470167082304286871099974399765441448453411558724506334092790222752962294149842306881685404326457534018329786111298960644845216191652872597534901a  
2887148238050771212671429597130393991977609459279722700926516024197432303799152733116328983144639225941977803110929349655578418949441740933805615113979999421542416933972905423711002751042080134966731755152859226962916775325475044445856101949404200039904432116776619949629539250452698719329070373564032273701278453899126120309244841494728976885406024976768122077071687938121709811322297802059565867i  i  is  g       @)r   extendsetZ
primerangerV   r	   intr   )sZpsr5   r)   r)   r*   test_isprimeJ   sB   

r_   c                   C   s^   dd t dD g dksJ tdrJ tdrJ tdr!J tdr'J td	r-J d S )
Nc                 S   rF   r)   )r   )r4   ir)   r)   r*   r6      rG   z"test_is_square.<locals>.<listcomp>rA   )r   r   r   r   r.   iK i <Y.l    @7Zkl   ,3;, i ^ )rV   r   r)   r)   r)   r*   test_is_square   s   ra   c                   C   sH   t dt sJ t dsJ t ddt  sJ t ddt  r"J d S )N   r   r   )r   r   r)   r)   r)   r*   test_is_gaussianprime   s   rc   N)Zsympy.ntheory.generater   r   Zsympy.ntheory.primetestr   r   r   r   r   r	   r
   r   Zsympy.testing.pytestr   Zsympyr   r+   r1   rY   r_   ra   rc   r)   r)   r)   r*   <module>   s    (
%G
