Digital root/Multiplicative digital root: Difference between revisions
Content added Content deleted
m (→idomatic version: elided extra line.) |
Not a robot (talk | contribs) (Add CLU) |
||
Line 729: | Line 729: | ||
+-------+------------------------------------+ |
+-------+------------------------------------+ |
||
</pre> |
</pre> |
||
=={{header|CLU}}== |
|||
<lang clu>digits = iter (n: int) yields (int) |
|||
while n>0 do |
|||
yield(n//10) |
|||
n := n/10 |
|||
end |
|||
end digits |
|||
mdr = proc (n: int) returns (int,int) |
|||
i: int := 0 |
|||
while n>=10 do |
|||
m: int := 1 |
|||
for d: int in digits(n) do |
|||
m := m * d |
|||
end |
|||
n := m |
|||
i := i+1 |
|||
end |
|||
return (i,n) |
|||
end mdr |
|||
first_mdr = iter (target_mdr, n: int) yields (int) |
|||
i: int := 0 |
|||
while n>0 do |
|||
x, m: int := mdr(i) |
|||
if m=target_mdr then |
|||
yield(i) |
|||
n := n -1 |
|||
end |
|||
i := i+1 |
|||
end |
|||
end first_mdr |
|||
start_up = proc () |
|||
po: stream := stream$primary_output() |
|||
nums: sequence[int] := sequence[int]$[123321, 7739, 893, 899998] |
|||
stream$putl(po, " N MDR MP") |
|||
stream$putl(po, "====== === ==") |
|||
for num: int in sequence[int]$elements(nums) do |
|||
stream$putright(po, int$unparse(num), 6) |
|||
stream$puts(po, " ") |
|||
i, m: int := mdr(num) |
|||
stream$putright(po, int$unparse(m), 3) |
|||
stream$puts(po, " ") |
|||
stream$putright(po, int$unparse(i), 3) |
|||
stream$putl(po, "") |
|||
end |
|||
stream$putl(po, "\nMDR: [n0..n4]") |
|||
stream$putl(po, "=== ========") |
|||
for dgt: int in int$from_to(0,9) do |
|||
stream$putright(po, int$unparse(dgt), 3) |
|||
stream$puts(po, ": ") |
|||
for num: int in first_mdr(dgt, 5) do |
|||
stream$puts(po, int$unparse(num) || " ") |
|||
end |
|||
stream$putl(po, "") |
|||
end |
|||
end start_up</lang> |
|||
{{out}} |
|||
<pre> N MDR MP |
|||
====== === == |
|||
123321 8 3 |
|||
7739 8 3 |
|||
893 2 3 |
|||
899998 0 2 |
|||
MDR: [n0..n4] |
|||
=== ======== |
|||
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|Common Lisp}}== |
=={{header|Common Lisp}}== |