σ
ΗOc           @   sp   d    Z  d   Z d d g d  Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z	 d   Z
 d S(   c         C   sl   d } |  d k r | S| d k r& |  Sx) |  | } | d k rC Pn  | }  | } q) | d k  rh | } n  | S(   Ni    (    (   t   at   bt   r(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   gcd   s    
	
c         C   s§   d } d } d } d } |  } | } xs | | } | | }	 |	 d k rK Pn  | } |	 } | }
 | } | | } |
 | } | }
 | } | | } |
 | } q' | | | g S(   Ni   i    (    (   R    R   t   mprimet   nt   mt   nprimet   ct   dt   qR   t   tt   qmt   qn(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   extgcd    s,    




i   i   c         C   sv   |  | d k r | d Sd } x9 t  d |   D]( } t |  |  d k r. | d 7} q. q. W| S|  | d <| | d <| S(   Ni    i   (   t   rangeR   (   R   t   cached_n_and_phit   phit   i(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   eulerphiH   s    

c         C   sp   |  } d } | d k  r. d G| Gd GHt   n  x; | d k rk | d @rT | | } n  | d ?} | | } q1 W| S(   Ni   i    s   intexp:  negative exponents   disallowed.(   t   RuntimeError(   t   xt   et   xpt   rv(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   intexpZ   s    	

c         C   s{   |  } d } | d k  r1 | } t  |  |  }  n  xC | d k rv | d @r[ | | | } n  | d ?} | | | } q4 W| S(   Ni   i    (   t   intmodrecip(   R   R   R   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt	   intmodexpl   s    

c         C   sO   t  |  |  d k r/ d G|  Gd G| GHt  n  t |  } t |  | d |  S(   Ni   s    intmodrecip:  impossible inverset   mod(   R   R   R   R   (   R   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyR   |   s
    	c         C   s\   |  d k  r d GHt   n  |  d k  r* d Sd } x% t d |  d  D] } | | 9} qD W| S(   Ni    s%   factorial: negative input disallowed.i   i   (   R   R   (   R   R   t   k(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt	   factorial   s    	c         C   s   |  d k  r d S|  d k r  d S| d k r0 d Sd } xE t  d | d  D]0 } |  | d k rJ | t |  | |  7} qJ qJ W| S(   Ni    i   (   R   t	   num_ptnsm(   R   R   t   sumR   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyR       s       c         C   s   t  |  |   S(   N(   R   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   num_ptns«   s    c         C   sΜ   g  } |  d k  r d S|  d k r) g  g S|  d k r? d g g S| d k rY d g |  g Sd } xf t  d | d  D]Q } |  | d k rs t |  | |  } x% | D] } | j | g |  q£ Wqs qs W| S(   Ni    i   (   R   t   ptnsmt   append(   R   R   R   R    R   t   tailst   tail(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyR"   ―   s        
 c         C   s   t  |  |   S(   N(   R"   (   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   ptnsΎ   s    N(   R   R   R   R   R   R   R   R   R!   R"   R&   (    (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackint.pyt   <module>   s   		(							