OPENW 1 CLEARW 1 ' ' Array f% is used to hold the divisors DIM f%(SQR(20000)) ! cannot redim arrays, so set size to largest needed ' ' 1. Show proper divisors of 1 to 10, inclusive ' FOR i%=1 TO 10 num%=@proper_divisors(i%) PRINT "Divisors for ";i%;":"; FOR j%=1 TO num% PRINT " ";f%(j%); NEXT j% PRINT NEXT i% ' ' 2. Find (smallest) number <= 20000 with largest number of proper divisors ' result%=1 ! largest so far number%=0 ! its number of divisors FOR i%=1 TO 20000 num%=@proper_divisors(i%) IF num%>number% result%=i% number%=num% ENDIF NEXT i% PRINT "Largest number of divisors is ";number%;" for ";result% ' ~INP(2) CLOSEW 1 ' ' find the proper divisors of n%, placing results in f% ' and return the number found ' FUNCTION proper_divisors(n%) LOCAL i%,root%,count% ' ARRAYFILL f%(),0 count%=1 ! index of next slot in f% to fill ' IF n%>1 f%(count%)=1 count%=count%+1 root%=SQR(n%) FOR i%=2 TO root% IF n% MOD i%=0 f%(count%)=i% count%=count%+1 IF i%*i%<>n% ! root% is an integer, so check if i% is actual squa- lists:seq(1,10)]. X: 1, N: [] X: 2, N: [1] X: 3, N: [1] X: 4, N: [1,2] X: 5, N: [1] X: 6, N: [1,2,3] X: 7, N: [1] X: 8, N: [1,2,4] X: 9, N: [1,3] X: 10, N: [1,2,5] [ok,ok,ok,ok,ok,ok,ok,ok,ok,ok] 2> properdivs:longest(20000). With 79, Number 15120 has the most divisors re root of n% f%(count%)=n%/i% count%=count%+1 ENDIF ENDIF NEXT i% ENDIF ' RETURN count%-1 ENDFUNC