Ascending primes: Difference between revisions

Add Dylan implementation
m (→‎{{header|J}}: test editing this page)
(Add Dylan implementation)
Line 435:
{{Output}}
<pre>2 3 5 7 13 17 19 23 29 37 47 59 67 79 89 127 137 139 149 157 167 179 239 257 269 347 349 359 367 379 389 457 467 479 569 1237 1249 1259 1279 1289 1367 1459 1489 1567 1579 1789 2347 2357 2389 2459 2467 2579 2689 2789 3457 3467 3469 4567 4679 4789 5689 12347 12379 12457 12479 12569 12589 12689 13457 13469 13567 13679 13789 15679 23459 23567 23689 23789 25679 34589 34679 123457 123479 124567 124679 125789 134789 145679 234589 235679 235789 245789 345679 345689 1234789 1235789 1245689 1456789 12356789 23456789</pre>
 
=={{header|Dylan}}==
{{trans|C++}}
 
[https://play.opendylan.org/shared/d04d21b97a8659b7 View in Dylan playground]
 
<syntaxhighlight lang="dylan">
define function prime? (n :: <integer>) => (p :: <boolean>)
case
n == 2
=> #t;
n == 1 | remainder(n, 2) == 0
=> #f;
otherwise
=> let root = sqrt(as(<double-float>, n));
iterate loop (k = 3)
case
remainder(n, k) == 0 => #f;
k > root => #t;
otherwise => loop(k + 2);
end
end
end case
end function;
 
define function ascending-primes () => (primes :: <sequence>)
let maybe = make(<deque>);
for (k from 1 to 9)
push-last(maybe, k)
end;
let primes = make(<stretchy-vector>);
while (~empty?(maybe))
let n = pop(maybe);
if (prime?(n))
add!(primes, n)
end;
for (k from modulo(n, 10) + 1 to 9)
push-last(maybe, n * 10 + k)
end
end;
primes
end function;
 
format-out("%=", ascending-primes());
</syntaxhighlight>
 
{{out}}
<pre>{stretchy vector 2, 5, 7, 13, 17, 19, 23, 29, 37, 47, 59, 67, 79, 89, 127, 137, 139, 149, 157, 167, 179, 239, 257, 269, 347, 349, 359, 367, 379, 389, 457, 467, 479, 569, 1237, 1249, 1259, 1279, 1289, 1367, 1459, 1489, 1567, 1579, 1789, 2347, 2357, 2389, 2459, 2467, 2579, 2689, 2789, 3457, 3467, 3469, 4567, 4679, 4789, 5689, 12347, 12379, 12457, 12479, 12569, 12589, 12689, 13457, 13469, 13567, 13679, 13789, 15679, 23459, 23567, 23689, 23789, 25679, 34589, 34679, 123457, 123479, 124567, 124679, 125789, 134789, 145679, 234589, 235679, 235789, 245789, 345679, 345689, 1234789, 1235789, 1245689, 1456789, 12356789, 23456789}</pre>
 
=={{header|F_Sharp|F#}}==
3

edits