utils.py 785 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. def add(a, b):
  2. return a + b
  3. def digits(n):
  4. return [n] if n < 10 else digits(n / 10) + [n % 10]
  5. def _gcd(a, b):
  6. while b:
  7. a, b = b, a % b
  8. return a
  9. def gcd(*args):
  10. return reduce(_gcd, args)
  11. def is_prime(n):
  12. if n == 2:
  13. return True
  14. if n < 2 or not n & 1:
  15. return False
  16. for i in xrange(3, int(n ** .5) + 1, 2):
  17. if not n % i:
  18. return False
  19. return True
  20. def primes_until(n):
  21. """ Sieve of Eratosthenes """
  22. lst = [False] * n
  23. i = 2
  24. while i < n:
  25. if not lst[i]:
  26. yield i
  27. for j in xrange(i, n, i):
  28. lst[j] = True
  29. i += 1
  30. def nprimes(n):
  31. a = 2
  32. while n:
  33. if is_prime(a):
  34. yield a
  35. n -= 1
  36. a += 1