1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | '''Last modified on 24/05/2010 Author: Xavier Ho <contact@xavierho.com> Dependencies: numpy''' from math import sqrt import numpy ############################################################### # Prime numbers generator def primes(limit=1000000): '''Returns a list of prime numbers less than the limit.''' return __numpy_primes(limit) def xprimes(limit=1000000): '''Returns a generator of prime numbers less than the limit.''' return __numpy_xprimes(limit) def __numpy_primes(limit=1000000): '''Returns a list of prime numbers up to the limit, using numpy and Sieve of Eratosthenes.''' primes = numpy.ones(limit, dtype=numpy.bool) for n in xrange(2, int(sqrt(limit))): if primes[n]: primes[n*n::n] = 0 return numpy.nonzero(primes)[0][2:] def __numpy_xprimes(limit=1000000): '''Returns a list of prime numbers up to the limit, using numpy and Sieve of Eratosthenes.''' primes = numpy.ones(limit, dtype=numpy.bool) for n in xrange(2, int(sqrt(limit))): if primes[n]: primes[n*n::n] = 0 primes[:2] = 0 return (x for x, p in enumerate(primes) if p) ############################################################### if __name__ == '__main__': from time import time start = time() # p = primes() for p in xprimes(): pass print time() - start, "seconds" print p |
JycnTGFzdCBtb2RpZmllZCBvbiAyNC8wNS8yMDEwCgpBdXRob3I6IFhhdmllciBIbyA8Y29udGFjdEB4YXZpZXJoby5jb20+CgpEZXBlbmRlbmNpZXM6IG51bXB5JycnCmZyb20gbWF0aCBpbXBvcnQgc3FydAppbXBvcnQgbnVtcHkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByaW1lIG51bWJlcnMgZ2VuZXJhdG9yCmRlZiBwcmltZXMobGltaXQ9MTAwMDAwMCk6CiAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBwcmltZSBudW1iZXJzIGxlc3MgdGhhbiB0aGUgbGltaXQuJycnCiAgICByZXR1cm4gX19udW1weV9wcmltZXMobGltaXQpCgpkZWYgeHByaW1lcyhsaW1pdD0xMDAwMDAwKToKICAgICcnJ1JldHVybnMgYSBnZW5lcmF0b3Igb2YgcHJpbWUgbnVtYmVycyBsZXNzIHRoYW4gdGhlIGxpbWl0LicnJwogICAgcmV0dXJuIF9fbnVtcHlfeHByaW1lcyhsaW1pdCkKCgpkZWYgX19udW1weV9wcmltZXMobGltaXQ9MTAwMDAwMCk6CiAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBwcmltZSBudW1iZXJzIHVwIHRvIHRoZSBsaW1pdCwgdXNpbmcgbnVtcHkgYW5kIFNpZXZlIG9mIEVyYXRvc3RoZW5lcy4nJycKICAgIHByaW1lcyA9IG51bXB5Lm9uZXMobGltaXQsIGR0eXBlPW51bXB5LmJvb2wpCiAgICBmb3IgbiBpbiB4cmFuZ2UoMiwgaW50KHNxcnQobGltaXQpKSk6CiAgICAgICAgaWYgcHJpbWVzW25dOgogICAgICAgICAgICBwcmltZXNbbipuOjpuXSA9IDAKICAgIHJldHVybiBudW1weS5ub256ZXJvKHByaW1lcylbMF1bMjpdCgpkZWYgX19udW1weV94cHJpbWVzKGxpbWl0PTEwMDAwMDApOgogICAgJycnUmV0dXJucyBhIGxpc3Qgb2YgcHJpbWUgbnVtYmVycyB1cCB0byB0aGUgbGltaXQsIHVzaW5nIG51bXB5IGFuZCBTaWV2ZSBvZiBFcmF0b3N0aGVuZXMuJycnCiAgICBwcmltZXMgPSBudW1weS5vbmVzKGxpbWl0LCBkdHlwZT1udW1weS5ib29sKQogICAgZm9yIG4gaW4geHJhbmdlKDIsIGludChzcXJ0KGxpbWl0KSkpOgogICAgICAgIGlmIHByaW1lc1tuXToKICAgICAgICAgICAgcHJpbWVzW24qbjo6bl0gPSAwCiAgICBwcmltZXNbOjJdID0gMAogICAgcmV0dXJuICh4IGZvciB4LCBwIGluIGVudW1lcmF0ZShwcmltZXMpIGlmIHApCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUKICAgIHN0YXJ0ID0gdGltZSgpCiMgICAgcCA9IHByaW1lcygpCiAgICBmb3IgcCBpbiB4cHJpbWVzKCk6IHBhc3MKICAgIHByaW50IHRpbWUoKSAtIHN0YXJ0LCAic2Vjb25kcyIgCiAgICBwcmludCBw
-
upload with new input
-
result: Success time: 0.02s memory: 0 kB returned value: 1


