Digital root/Multiplicative digital root: Difference between revisions

(added Factor)
Line 1,990:
8 : 8 18 24 29 36
9 : 9 19 33 91 119</pre>
 
=={{header|Phix}}==
<lang Phix>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</lang>
{{out}}
<pre>
Number MDR MP
====== === ==
123321 8 3
7739 8 3
893 2 3
899998 0 2
 
MDR 1 2 3 4 5
=== ===========================
0 0 10 20 25 30
1 1 11 111 1111 11111
2 2 12 21 26 34
3 3 13 31 113 131
4 4 14 22 27 39
5 5 15 35 51 53
6 6 16 23 28 32
7 7 17 71 117 171
8 8 18 24 29 36
9 9 19 33 91 119
</pre>
 
=={{header|PL/I}}==
7,804

edits