123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/ruby
- # Daniel "Trizen" Șuteu
- # Date: 09 April 2022
- # https://github.com/trizen
- # Generate prime numbers that have all digits in descending order.
- # See also:
- # https://rosettacode.org/wiki/Descending_primes
- # OEIS sequences:
- # https://oeis.org/A052014 -- Primes with distinct digits in descending order.
- func primes_with_descending_digits(base = 10) {
- var list = []
- var digits = @(1..^base)
- var end_digits = digits.grep { .is_coprime(base) }
- list << digits.grep { .is_prime && !.is_coprime(base) }...
- for k in (0 .. digits.end) {
- digits.combinations(k, {|*a|
- var v = a.digits2num(base)
- end_digits.each {|d|
- var n = (v*base + d)
- next if ((n >= base) && (a[0] <= d))
- list << n if n.is_prime
- }
- })
- }
- list.sort
- }
- var base = 10
- var arr = primes_with_descending_digits(base)
- say "There are #{arr.len} descending primes in base #{base}.\n"
- arr.each_slice(8, {|*a|
- say a.map { '%9s' % _ }.join(' ')
- })
|