Programmers
Meet the best programming lessons in videos and practices. Programmers provide programing lessons, algorithm problems, programming competitions, and blockchain materials.
프로그래머스 문제풀이
문제
문제설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한사항
- n은 2이상 1000000이하의 자연수입니다.
입출력 예
n | result |
---|---|
10 | 4 |
5 | 3 |
입출력 예 설명
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
문제해결과정
- 1부터 n사이의 소수의 수를 찾는다.
위 같은 문제 및 제한사항을 해석하고 문제풀이를 시작하면 됩니다.
나의 풀이
반복문을 2~n까지 돌려주며 소수를 구하고 카운팅한다.
def solution(n): answer = 1 for i in range(2,n+1): # 2~n까지 반복 cnt = 0 # cnt 변수 0으로 초기화 if i%2!=0: for j in range(1,int(i**0.5+1)): if i%j==0: cnt += 1 if cnt>1: break if cnt==1: # cnt가 1인 경우 소수 answer+=1 return answer
다른 사람의 풀이
차집합을 사용한 다른 풀이 방법을 가져와봤습니다.
i 본인을 제외한 배수들이 num에 있다면 빼주는 풀이방식이다.
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)