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