gets prime(i) input: number return: number
(i)
| 37 | |
| 38 | |
| 39 | def ith_prime(i): |
| 40 | """ |
| 41 | gets prime(i) |
| 42 | input: number |
| 43 | return: number |
| 44 | """ |
| 45 | global primes, interval |
| 46 | while i >= len(primes): |
| 47 | a = ((primes[-1] + 2) // 6) * 6 - 1 |
| 48 | b = a + interval |
| 49 | c = a + 2 |
| 50 | d = b + 2 |
| 51 | try: |
| 52 | primes.extend(filter(isprime, xrange(a, b, 6))) |
| 53 | primes.extend(filter(isprime, xrange(c, d, 6))) |
| 54 | primes = sorted(list(set(primes))) |
| 55 | mpp = open(fn, 'w') |
| 56 | cPickle.dump(primes, mpp, protocol = -1) |
| 57 | mpp.close() |
| 58 | print 'Prime[%s] = %s' % (fmt_n(len(primes)), fmt_n(primes[-1])) |
| 59 | except ValueError: |
| 60 | interval = interval // 2 |
| 61 | return primes[i] |
| 62 | |
| 63 | |
| 64 | def do_input(s): |