| 1234567891011121314151617 |
- #!/usr/bin/env python3
- def gen(seed, factor, mul=1):
- num = seed
- while True:
- num = (num * factor) % 2147483647
- if num % mul == 0:
- yield num & 0xffff
- # part 1
- a = gen(116, 16807)
- b = gen(299, 48271)
- print(sum(int(next(a) == next(b)) for i in range(40000000)))
- # part 2
- a = gen(116, 16807, 4)
- b = gen(299, 48271, 8)
- print(sum(int(next(a) == next(b)) for i in range(5000000)))
|