BEGIN INTEGER I, K, NFOUND; INTEGER ARRAY FACTORS[1:16]; COMMENT - RETURN P MOD Q; INTEGER FUNCTION MOD (P, Q); INTEGER P, Q; BEGIN MOD := P - Q * (P / Q); END; COMMENT FIND THE PRIME FACTORS OF N AND STORE IN THE EXTERNAL ARRAY "FACTORS", RETURNING THE NUMBER FOUND. IF N IS PRIME, IT WILL BE STORED AS THE FIRST AND ONLY FACTOR; INTEGER FUNCTION PRIMEFACTORS(N); INTEGER N; BEGIN INTEGER P, COUNT; P := 2; COUNT := 1; WHILE N >= P * P DO BEGIN IF MOD(N, P) = 0 THEN BEGIN FACTORS[COUNT] := P; COUNT := COUNT + 1; N := N / P; END ELSE P := P + 1; END; FACTORS[COUNT] := N; PRIMEFACTORS := COUNT; END; COMMENT -- EXERCISE THE ROUTINE; FOR I := 77 STEP 2 UNTIL 99 DO BEGIN WRITE(I,":"); NFOUND := PRIMEFACTORS(I); COMMENT - PRINT OUT THE FACTORS THAT WERE FOUND; FOR K := 1 STEP 1 UNTIL NFOUND DO BEGIN WRITEON(FACTORS[K]); END; END; END