61 lines
1.7 KiB
Plaintext
61 lines
1.7 KiB
Plaintext
# Project : Digital root/Multiplicative digital root
|
|
|
|
load "stdlib.ring"
|
|
root = newlist(10, 5)
|
|
for r = 1 to 10
|
|
for x = 1 to 5
|
|
root[r][x] = 0
|
|
next
|
|
next
|
|
root2 = list(10)
|
|
for y = 1 to 10
|
|
root2[y] = 0
|
|
next
|
|
see "Number MDR MP" + nl
|
|
num = [123321, 7739, 893, 899998]
|
|
digroot(num)
|
|
see nl
|
|
num = 0:12000
|
|
digroot(num)
|
|
see "First five numbers with MDR in first column:" + nl
|
|
for n1 = 1 to 10
|
|
see "" + (n1-1) + " => "
|
|
for n2 = 1 to 5
|
|
see "" + root[n1][n2] + " "
|
|
next
|
|
see nl
|
|
next
|
|
|
|
func digroot(num)
|
|
for n = 1 to len(num)
|
|
sum = 0
|
|
numold = num[n]
|
|
while true
|
|
pro = 1
|
|
strnum = string(numold)
|
|
for nr = 1 to len(strnum)
|
|
pro = pro * number(strnum[nr])
|
|
next
|
|
sum = sum + 1
|
|
numold = pro
|
|
numn = string(num[n])
|
|
sp = 6 - len(string(num[n]))
|
|
if sp > 0
|
|
for p = 1 to sp + 2
|
|
numn = " " + numn
|
|
next
|
|
ok
|
|
if len(string(numold)) = 1 and len(num) < 5
|
|
see "" + numn + " " + numold + " " + sum + nl
|
|
exit
|
|
ok
|
|
if len(string(numold)) = 1 and len(num) > 4
|
|
root2[numold+1] = root2[numold+1] + 1
|
|
if root2[numold+1] < 6
|
|
root[numold+1][root2[numold+1]] = num[n]
|
|
ok
|
|
exit
|
|
ok
|
|
end
|
|
next
|