Primes which contain only one odd digit: Difference between revisions

m
→‎{{header|Sidef}}: minor optimizations and simplifications
(Added Sidef)
m (→‎{{header|Sidef}}: minor optimizations and simplifications)
Line 367:
=={{header|Sidef}}==
<lang ruby>func primes_with_one_odd_digit(upto, base = 10) {
Enumerator({|callback|
 
var digitslist = @(^base)[]
var digits = @(^base)
 
var even_digits = digits.grep { .is_even }
var odd_digits = digits.grep { .is_odd }
 
for k in (0 .. upto.len(base)-1) {
even_digits.variations_with_repetition(k, {|*a|
breaknext if ([1, a...].digits2num(base)last >== upto0)
break if ([1, odd_digitsa.each..].digits2num(base) > {|d|upto)
odd_digits.each var n = [{|d, a...].digits2num(base)|
var callback(n) if ((n <= upto)[d, && na..is_prime.].digits2num(base)
}list << n if ((n <= upto) && n.is_prime)
})
})
})
 
list.sort
}
 
with (1e3) {|n|
var list = primes_with_one_odd_digit(1000).to_a.uniq.sort
say "There are #{list.len} primes under #{n.commify} which contain only one odd digit:"
list.each_slice(9, {|*a| say a.map { '%3s' % _ }.join(' ') })
Line 395 ⟶ 397:
 
for k in (1..8) {
var count = primes_with_one_odd_digit(10**k).to_a.uniq.len
say "There are #{'%6s' % count.commify} such primes <= 10^#{k}"
}</lang>
2,747

edits