Quick actions

cmd+k|ctrl+k

Navigation

Languages

For learning

Snippet info

Language

Python

Visibility

public

Author

mynameisjoker

Created

2017-12-15T12:46:09Z

Updated

2017-12-15T12:46:09Z

from functools import reduce

def generate(initial, factor, rem, scale=1):
    a = initial
    af = factor
    while True:
        a = (a * af) % rem
        if a % scale == 0: yield a

gen = (1 if (x & 0xFFFF) == (y & 0xFFFF) else 0 for x,y in
       zip(generate(618,16807,2**31-1,4),
           generate(814,48271,2**31-1,8)))
s = reduce(lambda x,y: x+y,(next(gen) for _ in range(5000000)))
print(s)
INFO