123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/usr/bin/ruby
- # Generate Achilles and strong Achilles numbers.
- # See also:
- # https://rosettacode.org/wiki/Achilles_numbers
- var P = 2.powerful(1e6)
- var achilles = Set(P.grep{ !.is_power }...)
- var strong_achilles = achilles.grep { achilles.has(.phi) }
- say "First 50 Achilles numbers:"
- achilles.sort.first(50).slices(10).each { .map{'%4s'%_}.join(' ').say }
- say "\nFirst 30 strong Achilles numbers:"
- strong_achilles.sort.first(30).slices(10).each { .map{'%5s'%_}.join(' ').say }
- say "\nNumber of Achilles numbers with:"
- achilles.to_a.group_by{.len}.sort_by{|k| k.to_i }.each_2d{|a,b|
- say "#{a} digits: #{b.len}"
- }
- __END__
- First 50 Achilles numbers:
- 72 108 200 288 392 432 500 648 675 800
- 864 968 972 1125 1152 1323 1352 1372 1568 1800
- 1944 2000 2312 2592 2700 2888 3087 3200 3267 3456
- 3528 3872 3888 4000 4232 4500 4563 4608 5000 5292
- 5324 5400 5408 5488 6075 6125 6272 6728 6912 7200
- First 30 strong Achilles numbers:
- 500 864 1944 2000 2592 3456 5000 10125 10368 12348
- 12500 16875 19652 19773 30375 31104 32000 33275 37044 40500
- 49392 50000 52488 55296 61731 64827 67500 69984 78608 80000
- Number of Achilles numbers with:
- 2 digits: 1
- 3 digits: 12
- 4 digits: 47
- 5 digits: 192
- 6 digits: 664
|