Problem solving/Algorithms
Finding prime numbers (소수 찾기)
Young_A
2020. 8. 28. 04:17
Question
Return the number of prime numbers between 1 and the given number n.
The prime number can be divided only by 1 and itself.
(1 is not a prime number)
Limitation
- n a natural number that is more than or equal to 2 and less than or equal to 1000000.
Example of I/O
n | result | description |
10 | 4 | 4 prime numbers [2, 3, 5, 7] between 1 and 10. |
5 | 3 | 3 prime numbers [2, 3, 5] between 3 and 5. |
My Solution 1
def solution(n):
answer = 0
for x in range(2, n + 1):
isPrime = True
for y in range(2, x - 1):
if(x%y == 0):
isPrime = False
if(isPrime):
answer += 1
return answer
# This solution can be used to find the answer.
# However, it can not pass the quiz because the time takes too long.
My Solution 2 with Sieve of Eratosthenes
def solution(n):
answer = 0
# a list including all positive integers less than n.
# excluding even numbers which are multiples of 2
prime_numbers = set([x for x in range(3, n + 1, 2)])
for x in range(3, n + 1, 2):
if x in prime_numbers:
# eliminate numbers which are multiples of x
prime_numbers -= set([x for x in range(x * 2, n + 1, x)])
# add 1 because prime_numbers does not include 2
answer = len(prime_numbers) + 1
return answer
Explanation
References