michel paul wrote:
... An interesting fact is that, except for 2 and 3, all primes are adjacent to a multiple of 6....
Having once been interested in prime pairs, I remember having written
a lot of code based on this "back in the day."  Here is my version of
your generator:

    def primes():
        for x in -1, 2, 3:
            yield x
        gen = primes().next
        for top in iter(gen, 3):
            pass # skip useless tests (we skip all multiples of 2 or 3)
        factors = []
        # get pump ready for a 5
        check = -1
        limit = 3 * 3 - 2 # How far will 3 work as top prime?
        factors = []
        while True:
            check += 6
            if check >= limit: # move if this pair needs another factor
                top = gen()
                limit = top * top - 2 # limit for both candidates
                factors.append(top)
            for element in check, check + 2:
                for factor in factors:
                    if element % factor == 0:
                        break
                else:
                    yield element

--Scott David Daniels
scott.dani...@acm.org

_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to