]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Simplify and speed-up an itertools recipe (gh-127848)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Thu, 12 Dec 2024 03:24:56 +0000 (21:24 -0600)
committerGitHub <noreply@github.com>
Thu, 12 Dec 2024 03:24:56 +0000 (21:24 -0600)
Doc/library/itertools.rst

index 03966f3d3d694ba5ecca401f3402507ef09da798..3b90d7830f36812cd243bd3044411a2e8a955781 100644 (file)
@@ -1015,7 +1015,7 @@ The following recipes have a more mathematical flavor:
 .. testcode::
 
    def powerset(iterable):
-       "powerset([1,2,3]) → () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
+       # powerset([1,2,3]) → () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)
        s = list(iterable)
        return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
 
@@ -1104,11 +1104,6 @@ The following recipes have a more mathematical flavor:
            data[p*p : n : p+p] = bytes(len(range(p*p, n, p+p)))
        yield from iter_index(data, 1, start=3)
 
-   def is_prime(n):
-       "Return True if n is prime."
-       # is_prime(1_000_000_000_000_403) → True
-       return n > 1 and all(n % p for p in sieve(math.isqrt(n) + 1))
-
    def factor(n):
        "Prime factors of n."
        # factor(99) → 3 3 11
@@ -1123,6 +1118,11 @@ The following recipes have a more mathematical flavor:
        if n > 1:
            yield n
 
+   def is_prime(n):
+       "Return True if n is prime."
+       # is_prime(1_000_000_000_000_403) → True
+       return n > 1 and next(factor(n)) == n
+
    def totient(n):
        "Count of natural numbers up to n that are coprime to n."
        # https://mathworld.wolfram.com/TotientFunction.html