mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Add more recipe tests. Make the factor recipe a bit faster and clearer. (GH-106817)
This commit is contained in:
parent
48956cc60e
commit
babb22da5a
1 changed files with 8 additions and 3 deletions
|
@ -1049,11 +1049,10 @@ The following recipes have a more mathematical flavor:
|
||||||
# factor(1_000_000_000_000_403) --> 1000000000000403
|
# factor(1_000_000_000_000_403) --> 1000000000000403
|
||||||
for prime in sieve(math.isqrt(n) + 1):
|
for prime in sieve(math.isqrt(n) + 1):
|
||||||
while True:
|
while True:
|
||||||
quotient, remainder = divmod(n, prime)
|
if n % prime:
|
||||||
if remainder:
|
|
||||||
break
|
break
|
||||||
yield prime
|
yield prime
|
||||||
n = quotient
|
n //= prime
|
||||||
if n == 1:
|
if n == 1:
|
||||||
return
|
return
|
||||||
if n > 1:
|
if n > 1:
|
||||||
|
@ -1354,6 +1353,12 @@ The following recipes have a more mathematical flavor:
|
||||||
>>> set(sieve(10_000)).isdisjoint(carmichael)
|
>>> set(sieve(10_000)).isdisjoint(carmichael)
|
||||||
True
|
True
|
||||||
|
|
||||||
|
>>> list(factor(99)) # Code example 1
|
||||||
|
[3, 3, 11]
|
||||||
|
>>> list(factor(1_000_000_000_000_007)) # Code example 2
|
||||||
|
[47, 59, 360620266859]
|
||||||
|
>>> list(factor(1_000_000_000_000_403)) # Code example 3
|
||||||
|
[1000000000000403]
|
||||||
>>> list(factor(0))
|
>>> list(factor(0))
|
||||||
[]
|
[]
|
||||||
>>> list(factor(1))
|
>>> list(factor(1))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue