Deceptive numbers: Difference between revisions

Content added Content deleted
(LFE version)
Line 351: Line 351:
</pre>
</pre>


=={{header|LFE}}==
{{Trans|Scheme}}
<syntaxhighlight lang="lisp">
(defmodule deceptives
(export (prime? 1) (deceptives 1)))

(defun prime? (n)
(prime? n 2 0 #B(1 2 2 4 2 4 2 4 6 2 6)))

(defun prime? (n d j wheel)
(cond
((=:= j (byte_size wheel))
(prime? n d 2 wheel))
((> (* d d) n)
'true)
((=:= 0 (rem n d))
'false)
(else
(prime? n (+ d (binary:at wheel j)) (+ j 1) wheel))))

(defun deceptives (n)
(deceptives 2 1 n '()))

(defun deceptives
((_ _ 0 l)
(lists:reverse l))
((k r n l)
(if (andalso (not (prime? k)) (=:= 0 (rem r k)))
(deceptives (+ k 1) (+ (* r 10) 1) (- n 1) (cons k l))
(deceptives (+ k 1) (+ (* r 10) 1) n l))))
</syntaxhighlight>
{{Out}}
<pre>
lfe> (slurp "deceptive.lfe")
#(ok deceptives)
lfe> (lfe_io:format "~w~n" (list (deceptives 10)))
(91 259 451 481 703 1729 2821 2981 3367 5461)
ok
</pre>
=={{header|Mathematica}}/{{header|Wolfram Language}}==
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">ClearAll[DeceptiveNumberQ]
<syntaxhighlight lang="mathematica">ClearAll[DeceptiveNumberQ]