773 Ruff Numbers -- v2.sf 730 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/ruby
  2. # https://projecteuler.net/problem=773
  3. func ruff_generator(k) {
  4. Enumerator({|f|
  5. var P = [2,5, k.by { .is_prime && (_%10 == 7) }...]
  6. var c = P.prod
  7. var a = []
  8. say "c = prod(#{P}) = #{c}"
  9. for n in (1..c) {
  10. n.is_coprime(c) || next
  11. if (n % 10 == 7) {
  12. a.push(n)
  13. f(n)
  14. }
  15. }
  16. loop {
  17. var n = (a.shift + c)
  18. if (n % 10 == 7) {
  19. a.push(n)
  20. f(n)
  21. }
  22. }
  23. })
  24. }
  25. # F(3) = 76101452
  26. # F(4) = 164491606552
  27. var k = 3
  28. var c = [2,5, k.by { .is_prime && (_%10 == 7) }...].prod
  29. var r = ruff_generator(k)
  30. say r.while { _ < c }.sum