    1MODE 12
   10PRINT"BBC BASIC 2 PROGramsPD.maths. COMPOSE, 30.3.90, 20.03.99 GOTOs RENUM. 0115"''
   20PRINT"CALCULATE RECURSIVE FACTORISATIONS (OF 360),"''" CALCULATE least (SMALLEST) INTEGER WITH (360) FACTORS,"'" BY Don S MCDONALD, WELLINGTON, NZ"
   24N1$="2^8*3^5*5^2*7*11"
   25PRINT;
   26   T$ = "2^10*3^6*5^4*7^4*11^2*13^2*17^2*19^2*23^2*29*31*37*41*43*47*53*59"
   27   PRINT ' T$ ' " = " EVAL T$;" HAS " N1$ '" = "EVAL N1$" FACTORS."''"=947,374+1 distinct factorisations."
   30PRINT' "SHORTEST PROGM THAT DOES STHG V INTG IN <26 STATMTS."
   40DIM A%(24),P%(25)
   50DATA 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
   60PRINT"PRIMES.":FOR I%=1TO25
   65READ P%(I%):PRINT;P%(I%)" ";:NEXT I%
   66:REM GOTO 70
   70INPUT'"ENTER POSITIVE INTEGER (EXPRESSION) 0= END, RETN = REPEAT";N$
   75IF N$<>""THEN N%=INT(EVAL(N$))
   77PRINT N$"=";N%
   80A%(1)=2
   90T1=1.7E38:NO=0:C=0:T2=127*LN2
   95ON ERROR REPORT:PRINT" at line ";ERL:GOTO 110
  100PROCF(1,N%) : REM GOTO 110.
  110PRINT"SMALLEST (";NO") ="T1
  115PRINT N$" = ";N%" FACTORS."
  120IF N%>1THEN GOTO 70
  121PRINT"PROGM COMPOSE E N D.";:STOP
  130:
  140DEF PROCF(I%,B%)
  150IF B%<128THEN T=2^(B%-1) ELSE T=0:GOTO 200
  160IF I%<2THEN GOTO 200
  170REM FORJ%=2TOI%
  172J%=1:REPEAT J%=J%+1
  174AI%=A%(I%+1-J%)-1:IF LN(T)+AI%*LN P%(J%)>T2 THEN T=0:GOTO 190
  180T=T*P%(J%)^AI%
  190UNTIL T=0 OR J%=I%: REM NEXTJ%     REM GOTO 190.
  191  REM GOTO 200
  200IF T>0 AND T<T1 THEN T1=T:NO=C:PRINT " min.= "; T, CHR$(7)CHR$(131) GET$;
  205PRINT"=";T
  220IF A%(I%)^2>B% THEN ENDPROC
  230REM FORA%(I%)=A%(I%)TOSQR(B%)
  232REPEAT
  240IF B% MOD A%(I%)=0THEN A%(I%+1)=A%(I%):C=C+1:PRINT TAB(2*I%);A%(I%)"  "B% DIV A%(I%)"  ("C")";:PROCF(I%+1,B% DIV A%(I%))
  245 A%(I%)=A%(I%)+1:UNTIL A%(I%)>SQR(B%):ENDPROC
  250NEXT A%(I%):ENDPROC
  260:
  270PRINT"FACTORIALS"
  275F=1
  280 FOR I%=1TO33
  290F=F*I%:PRINT;I%"! ="F"  ";
  300NEXT I%
  305PRINT'2^5*5^21/(3^15*7*11^2*13^2*17*19*23)
  310: