happy coding
[level 1] 소수 찾기 본문
문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
- n은 2이상 1000000이하의 자연수입니다.
내 풀이
def solution(n):
if n < 2:
return 0
ans = [True] * (n + 1)
ans[0] = ans[1] = False
for i in range(2, int(n**0.5) + 1):
if ans[i]:
for j in range(i * i, n + 1, i):
ans[j] = False
return sum(ans)
다른 풀이
def solution(n):
num=set(range(2,n+1))
for i in range(2,n+1):
if i in num:
num-=set(range(2*i,n+1,i))
return len(num)
'coding study > programmars' 카테고리의 다른 글
[level 0] 연속된 수의 합 (0) | 2024.08.11 |
---|---|
[level 1] 옹알이 (2) (0) | 2024.07.02 |
[level 1] 소수 만들기 (0) | 2024.07.01 |
[level 1] 과일 장수 (0) | 2024.07.01 |
[level 1] 푸드 파이트 대회 (0) | 2024.07.01 |
Comments