29 lines
747 B
Text
29 lines
747 B
Text
#!/usr/bin/hopper
|
|
#include <batch-en.h>
|
|
|
|
/* main program */
|
|
begin
|
|
ld=0
|
|
set decimal '0' // work with integers only
|
|
prepare data(DATA) // my dear "old" BASIC!
|
|
get len data, move to 'ld'
|
|
iter group ( --ld, ld, get data, perform(digital root), echo )
|
|
end
|
|
|
|
/* procedures */
|
|
.locals
|
|
|
|
func(digital root, n)
|
|
c = 0, cnum=n
|
|
iter group (++c, #(n>=10), s=0, q=0, m=n, \
|
|
iter group ( m=q, #( m<>0 ),\
|
|
#( q=int(m/10) ), #( s+= m-(q*10) ) ), n=s )
|
|
/* put all into stack */
|
|
#( lpad(".", 20, string(cnum) ) )
|
|
" -> digital root = ", #(n+0),", (additive persistence = ",#(c+0),")"
|
|
back
|
|
|
|
DATA:
|
|
data( 9992, 39390, 588225, 627615, 393900588225, 9837703004232342 )
|
|
data( 126765060022822940, 199, 10 )
|
|
back
|