| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/usr/bin/env python
- from __future__ import division
- from math import sqrt, ceil
- def primes_until(n):
- """ Sieve of Eratosthenes """
- lst = [False] * n
- i = 2
- while i < n:
- if not lst[i]:
- yield i
- for j in xrange(i, n, i):
- lst[j] = True
- i += 1
- def times(a, b):
- return a * b
- def div(m, n):
- return not divmod(n, m)[1]
- MAX = 2000000
- all_primes = list(primes_until(MAX))
- def primes(n):
- for p in all_primes:
- if p >= n:
- raise StopIteration
- yield p
- def phi(n):
- return reduce(times, iter(1 - 1 / p for p in primes(n) if div(p, n)), n)
- def resilience(d):
- return phi(d) / (d - 1)
- d = 2
- try:
- while resilience(d) >= 15499 / 94744:
- d += 1
- if d == MAX:
- print 'maximum reached:',
- break
- except KeyboardInterrupt:
- print 'interrupted:',
- print d
|