[프로그래머스] 소수 찾기

최지나·2023년 10월 20일
0

코딩테스트

목록 보기
47/154

문제

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

제한 조건
n은 2이상 1000000이하의 자연수입니다.

입출력 예

nresult
104
53

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/12921

생각

  • 주어진 수가 소수인지 아닌지 판단하는 함수를 생성해야겠다
    • 소수 판별 시에는 2부터 sqrt(주어진 수)까지 1씩 증가시킨 수로 나누어 떨어지는지를 사용해서 판별

코드

class Solution {
    public int solution(int n) {
        int cnt = 0;
        for (int i = 2; i <= n; i++) {
            if (isPrime(i))
                cnt++;
        }
        return cnt;
    }

    public boolean isPrime(int n) {
        boolean prime = true;
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                prime = false;
                break;
            }
        }
        return prime;
    }
}

다른 사람의 풀이

class Solution {
  public int solution(int n) {
      int answer = 0;
      for(int i = 2; i <= n; i++){
          int j = 2;
          int cnt = 0;
          while(j <= (int)Math.sqrt(i)){
              if(i % j == 0){
                cnt += 1;
                break;
              } 
              j += 1;
          }
          if(cnt == 0) answer += 1;
      }
      return answer;
  }
}
  • 소수인지를 판별할 수 (i)와 나누는 수 (j)를 증가시켜 가면서 i가 j로 나누어 떨어지는 경우가 없으면(1 제외) 소수의 cnt를 증가시키는 직관적인 풀이를 기록한다 😃
profile
의견 나누는 것을 좋아합니다 ლ(・ヮ・ლ)

0개의 댓글