Primes whose sum of digits is 25: Difference between revisions

Added Sidef
(Added Sidef)
Line 1,950:
{{out}}
<pre>997 1699 1789 1879 1987 2689 2797 2887 3499 3697 3769 3877 3967 4597 4759 4957 4993 </pre>
 
=={{header|Sidef}}==
Simple solution:
<lang ruby>5000.primes.grep { .sumdigits == 25 }.say</lang>
 
Generate such primes from digits (asymptotically faster):
<lang ruby>func generate_from_prefix(limit, digitsum, p, base, digits, t=p) {
 
var seq = [p]
 
digits.each {|d|
var num = (p*base + d)
num <= limit || return seq
 
var sum = (t + d)
sum <= digitsum || return seq
 
seq << __FUNC__(limit, digitsum, num, base, digits, sum)\
.grep { .is_prime }...
}
 
return seq
}
 
func primes_with_digit_sum(limit, digitsum = 25, base = 10, digits = @(^base)) {
digits.grep { _ > 0 }\
.map { generate_from_prefix(limit, digitsum, _, base, digits)... }\
.grep { .sumdigits(base) == digitsum }\
.sort
}
 
say primes_with_digit_sum(5000)</lang>
{{out}}
<pre>
[997, 1699, 1789, 1879, 1987, 2689, 2797, 2887, 3499, 3697, 3769, 3877, 3967, 4597, 4759, 4957, 4993]
</pre>
 
=={{header|Tcl}}==
2,747

edits