
    \h%                         S SK Jr  S SKJrJr  S SKJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJrJr  S rS rS rS	 rS
 r\S 5       r S r!S r"S r#S r$S r%S r&S r'g)    )gcd)Sievesieve)mr_lucas_extrastrong_paramsis_lucas_prp	is_squareis_strong_lucas_prpis_extra_strong_lucas_prp
proth_testisprimeis_euler_pseudoprimeis_gaussian_primeis_fermat_pseudoprimeis_euler_jacobi_pseudoprimeMERSENNE_PRIME_EXPONENTS_lucas_lehmer_primality_testis_mersenne_prime)slowraises)IFloatc                  P    [        SS5      (       d   e[        SS5      (       d   eg )N      	   )r        Z/var/www/auris/envauris/lib/python3.13/site-packages/sympy/ntheory/tests/test_primetest.pytest_is_fermat_pseudoprimer       s(     A&&&& A&&&&r   c                  T   [        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS5      (       d   e[        SS	5      (       d   e[        S
S5      (       d   e[        [        S 5        [        [        S 5        [        [        S 5        / SQn U  H  n[        US5      (       a  M   e   / SQn U  H  n[        US5      (       a  M   e   / SQnU H9  n[        SU5       H&  n[	        X15      S:w  a  M  [        X5      (       a  M&   e   M;     g )N   r            e      i  
   i,  )   c                      [        SS5      $ )Nr      r   r   r   r   <lambda>)test_euler_pseudoprimes.<locals>.<lambda>       3Aq9r   c                      [        SS5      $ )N   r   r,   r   r   r   r-   r.      r/   r   c                      [        SS5      $ )Nr#   r%   r,   r   r   r   r-   r.      s    3B:r   )U  i1  iQ    iq    	      I  iU  i     i!!  i(  Y)     )y     r4   c  i    i     "  r;   s0  ia<  =  @  !I  K  [  iU`  iim  r1   )r4   r6   rD   iQ  iA  ia& iaz i1 i i) iu )r   r   
ValueErrorranger   )	euler_prppabsolute_euler_prpas       r   test_euler_pseudoprimesrO      s!   A&&&&A&&&&A&&&&Q''''b))))r****
:9:
:9:
::;CI#Aq)))) PI#Aq)))) Bq!A1yA~'----   r   c                  P    [        SS5      (       d   e[        SS5      (       d   eg )N   r   r#   )r   r   r   r    test_is_euler_jacobi_pseudoprimerR   6   s(    &r1----&r1----r   c                      [        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S	:X  d   e[        S
5      S:X  d   e[        S5      S:X  d   eg )Nr1   )r   r1   r   r   )   r+   r   r'   r   )r   r   r   rQ   )   r   r   ;   )    r%   r   i  )u   rQ   r   )r   r   r   r   test_lucas_extrastrong_paramsrY   ;   s    $Q'9444$Q':555$Q'9444$Q'9444$R(J666$R(J666$S)\999r   c                      [        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   eg )	Nr+   F  T}*  r         )r   r   r   r   test_is_extra_strong_lucas_prpr_   E   st    $Q'5000$S)T111$U+t333$Q'5000$R(E111$S)U222r   c                  :   [        SS5       V s/ s H#  n U S-  (       d  M  [        U 5      (       a  M!  U PM%     nn [        U5      S:X  d   eU V s/ s H  n [        U S/5      (       d  M  U PM     sn / SQ:X  d   eU V s/ s H  n [        U S/5      (       d  M  U PM     sn / SQ:X  d   eU V s/ s H  n [        U S/5      (       d  M  U PM     sn / S	Q:X  d   e[	        S
 U 5       5      (       a   eU V s/ s H  n [        U 5      (       d  M  U PM     sn / SQ:X  d   eU V s/ s H  n [        U 5      (       d  M  U PM     sn / SQ:X  d   eU V s/ s H  n [        U 5      (       d  M  U PM     sn / SQ:X  d   eg s  sn f s  sn f s  sn f s  sn f s  sn f s  sn f s  sn f )Nr   順 r<   iny)r5   r7   r8   r9   r:   rD   ir  i/  i  i  i  i# i: iM i%Y ib r1   )r=   r>   r?   r@   rA   rB   r;   rC   rE   rF   rG   rH   i{  i  ]  i  i  ia# i4 iQB iiW iY i} E  )1r         1   A   Q   rc   r3   iW  i  iu  i  ie  i  i  r8   r9   iM  i  iu  i3  rB   rC   iq2  i:  i>  i1N  iV  iZ  iI`  iaa  ia|  i+  ig  iͨ  i  rb   iy  ie  i  iY  i  i  i  i i i+ iI2 iwO c              3   <   #    U  H  n[        US /5      v   M     g7f)l   j_| Nr   ).0ns     r   	<genexpr>test_prps.<locals>.<genexpr>a   s     GA2a-.//s   )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 | )ro   rp   r\   rq   rr   rs   rt   ru   rw   rx   r{   r|   )r[   i  rp   r\   iCm  is  ix  i{  rv   ry   rz   r{   )rJ   r   sumr   anyr   r
   r   )rl   oddcompositess     r   	test_prpsr   M   s    %a "1	A aj M " }+++$3}!1qc
A}3 89 9 9 9 %3}!1qc
A}3 82 2 2 2 %5}!1seA}5 :    GGGGGG$8}!QA}8 =9 9 9 9 %?}!(;A(>A}? D    % }!(A!(DA}   =" 4 4 6 9 @sW   E:E:E:E?*E??FF.F	F	6FF#F;FF(Fc                     ^ / SQn / SQn[        S5       H3  mTU ;   a  [        T5      TU;   :X  d   eM  [        [        U4S j5        M5     g )N)r1   r   r   r"   r$   rd   !   r)   rf   9   rg   rh   a   q                  )r1   r   r"   r$   r)   r   r   r      c                     > [        T 5      $ )N)r   )rl   s   r   r-   !test_proth_test.<locals>.<lambda>~   s	    z!}r   )rJ   r   r   rI   )A080075A080076rl   s     @r   test_proth_testr   s   sG    5G /G3Z<a=Q'\222:45	 r   c                  p    [         R                  " SS5       H  n [        U 5      U [        ;   :X  a  M   e   g )Nr1   d   )r   
primeranger   r   )rL   s    r    test_lucas_lehmer_primality_testr      s2    a%+A.18P3PQQQ &r   c                      [        S5      SL d   e[        S5      SL d   e[        S5      SL d   e[        S5      SL d   e[        S5      SL d   e[        S5      SL d   e[        S	5      SL d   eg )
NFr1   Tr(      i  i i)r   r   r   r   test_is_mersenne_primer      s    R E)))Q4'''R E)))S!T)))S!U***V$,,,Z(D000r   c                  ,   [        5       n U R                  S5        [        U R                  SS5      5      n[	        S5       H  nX!;   [        U5      :X  a  M   e   [        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S	5      (       d   e[        S
5      (       d   e[        S5      (       d   e[        S5      (       d   e[        [        S5      5      (       d   e[        S5      (       d   e[        SS-  S-
  5      (       d   e[        SS-  S-
  5      (       d   e[        SS-  S-
  5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        [        S5      5      (       a   e[        [        S5      5      (       a   e[        R                  " S5        [        S5      (       d   e[        S5      (       a   e[        [        S  5        [        [        S! 5        g )"Nra   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  c                      [        S5      $ )Ng       @)r   r   r   r   r-   test_isprime.<locals>.<lambda>   s    ws|r   c                  *    [        [        S5      5      $ )Nr<   )r   r   r   r   r   r-   r      s    wuQx0r   )
r   extendsetr   rJ   r   intr   r   rI   )spsrl   s      r   test_isprimer      s   AHHV	Q\\!V$	%B6]GAJ&&&  9;=!!!!=!!!!'((((,----0111156666:;;;;3 1 2 3 3 3 3 91b5191c6A:q#vz""""
 }%%%%}%%%%''''*++++'((((/0000/000056666
 s A B C C C C s 8 9 : : : : 
LL4===t}}
:+,
:01r   c                  .   [        S5       V s/ s H  n [        U 5      (       d  M  U PM     sn / SQ:X  d   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   e[        S5      (       a   eg s  sn f )Nrd   )r   r   r+   r   r]   iK i <Y.l    @7Zkl   ,3;, i ^ )rJ   r	   is    r   test_is_squarer      s    Ry1y!IaLAy15EEEE !!!!!!!!!!!!""""""""" 2s
   BBc                      [        S[        -  5      (       d   e[        S5      (       d   e[        SS[        -  -   5      (       d   e[        SS[        -  -   5      (       a   eg )Nr'   r<   r1   )r   r   r   r   r   test_is_gaussianprimer      s]    QqS!!!!QQ1W%%%% QqS)))))r   c                  \    S V s/ s H  n [        U / SQ5      PM     sn / SQ:X  d   eg s  sn f )N)r   r<   r%   )r<   r1   r   r'   )FTFrj   r   s    r   test_issue_27145r      s)    %./YBqOY/3GGGG/s   )N)(mathr   sympy.ntheory.generater   r   sympy.ntheory.primetestr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   sympy.core.numbersr   r   r    rO   rR   rY   r_   r   r   r   r   r   r   r   r   r   r   r   <module>r      s     /8 8 8 8 8 . ''
.D.
:3 " "J6R
1E2P#*Hr   