From 765be4581e66f1e8e92f24606c243a8cd45e4d3c Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Wed, 3 Nov 2021 23:32:10 +0300 Subject: [PATCH] Improve Project Euler problem 012 solution 2 (#5760) * Improve solution * updating DIRECTORY.md Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> --- project_euler/problem_012/sol2.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/project_euler/problem_012/sol2.py b/project_euler/problem_012/sol2.py index 1cc79fc4c..380a9b74b 100644 --- a/project_euler/problem_012/sol2.py +++ b/project_euler/problem_012/sol2.py @@ -29,7 +29,18 @@ def triangle_number_generator(): def count_divisors(n): - return sum(2 for i in range(1, int(n ** 0.5) + 1) if n % i == 0 and i * i != n) + divisors_count = 1 + i = 2 + while i * i <= n: + multiplicity = 0 + while n % i == 0: + n //= i + multiplicity += 1 + divisors_count *= multiplicity + 1 + i += 1 + if n > 1: + divisors_count *= 2 + return divisors_count def solution():