From 1ad4d05cdfcdafd2584312fba7854497aad9cd22 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Mon, 1 Nov 2021 00:19:55 +0300 Subject: [PATCH 1/3] Improve solution --- project_euler/problem_012/sol1.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/project_euler/problem_012/sol1.py b/project_euler/problem_012/sol1.py index 7e080c4e45a1..6d6af62d85c7 100644 --- a/project_euler/problem_012/sol1.py +++ b/project_euler/problem_012/sol1.py @@ -21,17 +21,20 @@ What is the value of the first triangle number to have over five hundred divisors? """ -from math import sqrt def count_divisors(n): - nDivisors = 0 - for i in range(1, int(sqrt(n)) + 1): - if n % i == 0: - nDivisors += 2 - # check if n is perfect square - if n ** 0.5 == int(n ** 0.5): - nDivisors -= 1 + nDivisors = 1 + i = 2 + while i * i <= n: + multiplicity = 0 + while n % i == 0: + n //= i + multiplicity += 1 + nDivisors *= multiplicity + 1 + i += 1 + if n > 1: + nDivisors *= 2 return nDivisors From 026ddd0434170521e7bc8792459f5536cdd2f5e5 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Mon, 1 Nov 2021 00:20:10 +0300 Subject: [PATCH 2/3] Uncomment code that has been commented due to slow execution affecting Travis --- project_euler/problem_012/sol1.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/project_euler/problem_012/sol1.py b/project_euler/problem_012/sol1.py index 6d6af62d85c7..861d026ece5b 100644 --- a/project_euler/problem_012/sol1.py +++ b/project_euler/problem_012/sol1.py @@ -42,9 +42,8 @@ def solution(): """Returns the value of the first triangle number to have over five hundred divisors. - # The code below has been commented due to slow execution affecting Travis. - # >>> solution() - # 76576500 + >>> solution() + 76576500 """ tNum = 1 i = 1 From db62ccef077f1c9a1ef8fcdc97c38a784b57f207 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Mon, 1 Nov 2021 00:24:52 +0300 Subject: [PATCH 3/3] Retest