From b55da046029e681c1811f5f1cb24c35117d462ce Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 25 Oct 2021 11:07:10 +0300 Subject: [PATCH] Improve Project Euler problem 058 solution 1 (#4782) * Fix typo * Improve solution * Retest * Replace n with number --- project_euler/problem_058/sol1.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/project_euler/problem_058/sol1.py b/project_euler/problem_058/sol1.py index d3b15157f..ed407edf7 100644 --- a/project_euler/problem_058/sol1.py +++ b/project_euler/problem_058/sol1.py @@ -33,11 +33,12 @@ So we check individually each one of these before incrementing our count of current primes. """ +from math import isqrt -def isprime(d: int) -> int: +def isprime(number: int) -> int: """ - returns whether the given digit is prime or not + returns whether the given number is prime or not >>> isprime(1) 0 >>> isprime(17) @@ -45,14 +46,15 @@ def isprime(d: int) -> int: >>> isprime(10000) 0 """ - if d == 1: + if number == 1: return 0 - i = 2 - while i * i <= d: - if d % i == 0: + if number % 2 == 0 and number > 2: + return 0 + + for i in range(3, isqrt(number) + 1, 2): + if number % i == 0: return 0 - i = i + 1 return 1