Special divisors: Difference between revisions

Content added Content deleted
(Added solution for Action!)
(Added Forth solution)
Line 814: Line 814:
73 77 79 82 83 86 88 89 93 97 99 101 103 107 109 113 121 127
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
131 137 139 143 149 151 157 163 167 169 173 179 181 187 191 193 197 199
</pre>

=={{header|Forth}}==
{{works with|Gforth}}
<lang forth>: reverse ( n -- n )
0 >r
begin
dup 0 >
while
10 /mod swap
r> 10 * + >r
repeat
drop r> ;

: special? ( n -- ? )
dup reverse >r
2
begin
2dup dup * >=
while
2dup mod 0= if
dup reverse r@ swap mod 0 <> if
rdrop 2drop false exit
then
2dup / dup 2 pick <> if
reverse r@ swap mod 0 <> if
rdrop 2drop false exit
then
else
drop
then
then
1+
repeat
rdrop 2drop true ;

: main
0
200 1 do
i special? if
i 3 .r
1+
dup 10 mod 0= if cr else space then
then
loop cr
. ." numbers found." cr ;

main
bye</lang>

{{out}}
<pre>
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
72 numbers found.
</pre>
</pre>