MODULE fact; FROM MYINOUT IMPORT ReadLongReal, WriteLongCard, WriteString, WriteLn, ReadLn, WriteLongReal; FROM SUPINT IMPORT SuperInteger, Create, ReadSup, WriteSup; FROM SUPFACT IMPORT Factors, InfoFactors, Factorize; FROM CHRONO IMPORT TimeUnit, TimeFormat, Chrono, InitChrono, WriteChrono; VAR N : SuperInteger; t : LONGREAL; L : Factors; C : Chrono; BEGIN Create (N,4); WriteLn; WriteString ( 'Factorisation de N (test de SENTIERS)' ); WriteLn; WriteString ( '-------------------------------------' ); WriteLn; WriteLn; WriteString ( 'N ? ' ); ReadSup (N,10); ReadLn; WriteString ('Temps CPU maximal (minutes) ? '); ReadLongReal ( t ); ReadLn; WriteLn; WriteString ('Factorisation en cours ...'); WriteLn; WriteLn; InitChrono ( C ); Factorize ( N, t, L ); WriteString ('Termine. Temps CPU : '); WriteChrono (C, min); WriteLn; WriteLn; WriteString ('Facteurs : '); WriteLn; WriteLn; WHILE L # NIL DO WITH L^ DO WriteSup ( Factor, 10, 60 ); WriteString (' ^ '); WriteLongCard ( Multiplicity, 10 ); IF NOT Prime THEN WriteString (' COMPOSE!') END; WriteLn; END; L := L^.Next END; WriteLn END fact.