39 lines
884 B
Text
39 lines
884 B
Text
function mdr_mp(integer m)
|
|
integer mp = 0
|
|
while m>9 do
|
|
integer newm = 1
|
|
while m do
|
|
newm *= remainder(m,10)
|
|
m = floor(m/10)
|
|
end while
|
|
m = newm
|
|
mp += 1
|
|
end while
|
|
return {m,mp}
|
|
end function
|
|
|
|
constant tests = {123321, 7739, 893, 899998}
|
|
printf(1,"Number MDR MP\n")
|
|
printf(1,"====== === ==\n")
|
|
for i=1 to length(tests) do
|
|
integer ti = tests[i]
|
|
printf(1,"%6d %6d %6d\n",ti&mdr_mp(ti))
|
|
end for
|
|
|
|
integer i=0, found = 0
|
|
sequence res = repeat({},10)
|
|
while found<50 do
|
|
integer {mdr,mp} = mdr_mp(i)
|
|
if length(res[mdr+1])<5 then
|
|
res[mdr+1] &= i
|
|
found += 1
|
|
end if
|
|
i += 1
|
|
end while
|
|
|
|
printf(1,"\nMDR 1 2 3 4 5")
|
|
printf(1,"\n=== ===========================\n")
|
|
|
|
for i=1 to 10 do
|
|
printf(1,"%2d %5d %5d %5d %5d %5d\n",prepend(res[i],i-1))
|
|
end for
|