From c3272b9854cdff25827663ea871209c5d94492a1 Mon Sep 17 00:00:00 2001 From: Matsson Date: Tue, 5 Oct 2021 19:25:24 +0200 Subject: [PATCH] Iterate by 2 instead of 1 by doing the even factors seperately --- maths/prime_factors.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/maths/prime_factors.py b/maths/prime_factors.py index e520ae3a6d04..d88bd440a1f8 100644 --- a/maths/prime_factors.py +++ b/maths/prime_factors.py @@ -33,11 +33,16 @@ def prime_factors(n: int) -> list[int]: TypeError: '<=' not supported between instances of 'int' and 'list' """ - i = 2 + factors = [] + while n % 2 == 0: + n //= 2 + factors.append(2) + + i = 3 while i * i <= n: if n % i: - i += 1 + i += 2 else: n //= i factors.append(i)