

DEFINITION MODULE SUPFACT;

FROM SUPINT IMPORT SuperInteger;

TYPE
   Factors = POINTER TO InfoFactors;    (* Une liste de facteurs.       *)
   InfoFactors = RECORD
      Factor       : SuperInteger;      (* Un facteur.                  *)
      Multiplicity : LONGCARD;          (* Sa multiplicite.             *)
      Prime        : BOOLEAN;           (* FALSE ssi on sait qu'il est  *)
                                        (* compose.                     *)
      Next         : Factors            (* Liste des facteurs suivants, *)
                                        (* = NIL s'il n'y en a plus.    *)
      END;

PROCEDURE IsPrime
   ( A : SuperInteger;
     k : CARDINAL
   ) : BOOLEAN;


PROCEDURE IsProbablyPrime
   ( A : SuperInteger;
     k : CARDINAL
   ) : BOOLEAN;


PROCEDURE Factorize
   ( A     : SuperInteger;
     T     : LONGREAL;
     VAR L : Factors
   );


END SUPFACT.
