49 lines
833 B
Text
49 lines
833 B
Text
PROGRAM DECOMPOSE
|
|
|
|
|
|
!
|
|
! for rosettacode.org
|
|
!
|
|
|
|
!VAR NUM,J
|
|
|
|
DIM PF[100]
|
|
|
|
PROCEDURE STORE_FACTOR
|
|
PF[0]=PF[0]+1
|
|
PF[PF[0]]=CA
|
|
I=I/CA
|
|
END PROCEDURE
|
|
|
|
PROCEDURE DECOMP(I)
|
|
PF[0]=0 CA=2 ! special case
|
|
LOOP
|
|
IF I=1 THEN EXIT PROCEDURE END IF
|
|
EXIT IF INT(I/CA)*CA<>I
|
|
STORE_FACTOR
|
|
END LOOP
|
|
FOR CA=3 TO INT(SQR(I)) STEP 2 DO
|
|
LOOP
|
|
IF I=1 THEN EXIT PROCEDURE END IF
|
|
EXIT IF INT(I/CA)*CA<>I
|
|
STORE_FACTOR
|
|
END LOOP
|
|
END FOR
|
|
IF I>1 THEN CA=I STORE_FACTOR END IF
|
|
END PROCEDURE
|
|
|
|
BEGIN
|
|
! ----- function generate
|
|
! in ... I ... number
|
|
! out ... PF[] ... factors
|
|
! PF[0] ... # of factors
|
|
! mod ... CA ... pr.fact. candidate
|
|
PRINT(CHR$(12);) !CLS
|
|
INPUT("Numero ",NUM)
|
|
DECOMP(NUM)
|
|
PRINT(NUM;"=";)
|
|
FOR J=1 TO PF[0] DO
|
|
PRINT(PF[J];)
|
|
END FOR
|
|
PRINT
|
|
END PROGRAM
|