Almost prime: Difference between revisions
→{{header|Sidef}}: much faster algorithm
m (→{{header|Wren}}: Changed to Wren S/H) |
(→{{header|Sidef}}: much faster algorithm) |
||
Line 4,772:
=={{header|Sidef}}==
Efficient algorithm for generating all the k-almost prime numbers in a given range '''[a,b]''':
<syntaxhighlight lang="ruby">func
a
n > 1 ? (f.inc == k) : (f == k)▼
func (m, lo, k) {
var hi = idiv(b,m).iroot(k)
lo = max(lo, idiv_ceil(a, m))
each_prime(lo, hi, {|p|
})
return nil
}
each_prime(lo, hi, {|p|
var t = m*p
var u = idiv_ceil(a, t)
var v = idiv(b, t)
next if (u > v)
__FUNC__(t, p, k-1)
})
}(1, 2, k)
return arr.sort
}
for k in (1..5) {
var (x=10, lo=1,
arr +=
break if (arr.len >=
hi =
▲ } << 1..Inf
}
say arr.first(x)
}
{{out}}
<pre>
Line 4,799 ⟶ 4,827:
[32, 48, 72, 80, 108, 112, 120, 162, 168, 176]
</pre>
Also built-in:
<syntaxhighlight lang="ruby">for k in (1..5) {
var x = 10
say k.almost_primes(x.nth_almost_prime(k))
}</syntaxhighlight>
(same output as above)
=={{header|Swift}}==
|