15_generators.py 411 B

1234567891011121314151617
  1. #!/usr/bin/env python3
  2. def gen(seed, factor, mul=1):
  3. num = seed
  4. while True:
  5. num = (num * factor) % 2147483647
  6. if num % mul == 0:
  7. yield num & 0xffff
  8. # part 1
  9. a = gen(116, 16807)
  10. b = gen(299, 48271)
  11. print(sum(int(next(a) == next(b)) for i in range(40000000)))
  12. # part 2
  13. a = gen(116, 16807, 4)
  14. b = gen(299, 48271, 8)
  15. print(sum(int(next(a) == next(b)) for i in range(5000000)))