Special divisors: Difference between revisions
Content added Content deleted
(Created page with "{{Draft task}} ;Task: Numbers n such that reverse(d) divides reverse(n) for all divisors d of n, where '''n < 200''' <br><br> =={{header|Ring}}== <lang ring> load "stdlib.rin...") |
Thundergnat (talk | contribs) (→{{header|Raku}}: Add a Raku example) |
||
Line 4: | Line 4: | ||
Numbers n such that reverse(d) divides reverse(n) for all divisors d of n, where '''n < 200''' |
Numbers n such that reverse(d) divides reverse(n) for all divisors d of n, where '''n < 200''' |
||
<br><br> |
<br><br> |
||
=={{header|Raku}}== |
|||
<lang perl6>use Prime::Factor:ver<0.3.0+>; |
|||
say "{+$_} matching numbers:\n{.batch(10)».fmt('%3d').join: "\n"}" |
|||
given (1..^200).grep: { all .flip «%%« .&divisors».flip };</lang> |
|||
{{out}} |
|||
<pre>72 matching numbers: |
|||
1 2 3 4 5 6 7 8 9 11 |
|||
13 17 19 22 23 26 27 29 31 33 |
|||
37 39 41 43 44 46 47 53 55 59 |
|||
61 62 66 67 69 71 73 77 79 82 |
|||
83 86 88 89 93 97 99 101 103 107 |
|||
109 113 121 127 131 137 139 143 149 151 |
|||
157 163 167 169 173 179 181 187 191 193 |
|||
197 199</pre> |
|||
=={{header|Ring}}== |
=={{header|Ring}}== |
||
<lang ring> |
<lang ring> |
Revision as of 17:18, 30 March 2021
Special divisors is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
- Task
Numbers n such that reverse(d) divides reverse(n) for all divisors d of n, where n < 200
Raku
<lang perl6>use Prime::Factor:ver<0.3.0+>;
say "{+$_} matching numbers:\n{.batch(10)».fmt('%3d').join: "\n"}"
given (1..^200).grep: { all .flip «%%« .&divisors».flip };</lang>
- Output:
72 matching numbers: 1 2 3 4 5 6 7 8 9 11 13 17 19 22 23 26 27 29 31 33 37 39 41 43 44 46 47 53 55 59 61 62 66 67 69 71 73 77 79 82 83 86 88 89 93 97 99 101 103 107 109 113 121 127 131 137 139 143 149 151 157 163 167 169 173 179 181 187 191 193 197 199
Ring
<lang ring> load "stdlib.ring"
see "working..." + nl
row = 0 limit1 = 200
for n = 1 to limit1
flag = 1 revNum = rever(string(n)) revNum = number(revNum) for m = 1 to n/2 revDiv = rever(String(m)) revDiv = number(revDiv) if n%m = 0 if revNum % revDiv = 0 flag = 1 else flag = 0 exit ok ok next if flag = 1 row = row + 1 see "" + n + " " if row%10 = 0 see nl ok ok
next
see nl + "done..." + nl
func rever(str)
rev = "" for n = len(str) to 1 step -1 rev = rev + str[n] next return rev
</lang>
- Output:
working... 1 2 3 4 5 6 7 8 9 11 13 17 19 22 23 26 27 29 31 33 37 39 41 43 44 46 47 53 55 59 61 62 66 67 69 71 73 77 79 82 83 86 88 89 93 97 99 101 103 107 109 113 121 127 131 137 139 143 149 151 157 163 167 169 173 179 181 187 191 193 197 199 done...