Digital root/Multiplicative digital root: Difference between revisions
Content added Content deleted
(added Factor) |
|||
Line 1,990: | Line 1,990: | ||
8 : 8 18 24 29 36 |
8 : 8 18 24 29 36 |
||
9 : 9 19 33 91 119</pre> |
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}}== |
=={{header|PL/I}}== |