| 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
| 풀이
class Solution {
public int solution(int n) {
int answer = 0;
boolean flag;
for(int i=2; i<=n; i++)
{
flag = true;
for(int j=2; j<=Math.sqrt(i); j++) {
if(i % j == 0) {
flag = false;
break;
}
}
if(flag)
answer++;
}
return answer;
}
}
| 정리
2부터 i까지 나누는 방식으로 풀이하면 시간 초과가 나온다.
소수는 해당 수의 제곱근보다 작은 수들이기 때문에 반복문의 범위를 sqrt(i)로 좁혀서 풀이한다.