find_upper_bounds.sf 471 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/ruby
  2. var min = 2020
  3. var max = 3000
  4. var multiples = (min..max -> grep { .is_coprime(.dedekind_psi) && .is_odd } )
  5. var L = multiples.lcm
  6. ARGF.each {|n|
  7. n.to_i!
  8. if (gcd(n, L) > 1) {
  9. var values = multiples.grep { .divides(n) }
  10. for k in (values) {
  11. say "#{k} #{n}"
  12. multiples.delete(k)
  13. }
  14. multiples || break
  15. }
  16. }
  17. if (multiples.len > 0) {
  18. say "Couldn't find upper-bounds for: #{multiples}"
  19. }