243.py 673 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env python
  2. from __future__ import division
  3. from utils import is_prime, nprimes
  4. #print list(nprimes(15499))
  5. #import sys; sys.exit()
  6. def times(a, b):
  7. return a * b
  8. known_primes = {}
  9. def primes(n):
  10. for p in range(2, n):
  11. if p in known_primes:
  12. yield p
  13. elif is_prime(p):
  14. known_primes[p] = None
  15. yield p
  16. def phi(n):
  17. return reduce(times, iter(1 - 1 / p for p in primes(n) if not n % p), n)
  18. def resilience(d):
  19. return phi(d) / (d - 1)
  20. for d in nprimes(15499):
  21. print d,
  22. res = resilience(d)
  23. if res < 15499 / 94744:
  24. print d
  25. break
  26. print res, 15499 / 94744
  27. d += 30