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

allnight5·2023년 1월 12일
0

프로그래머스

목록 보기
16/73

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

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

자바 첫번째

import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
        boolean[] isPrime = new boolean[n+1];
        Arrays.fill(isPrime, true);
        isPrime[0]=isPrime[1]=false;
        for(int i=2; i*i<=n;i++){
            if(isPrime[i]){
                for(int j=i*i; j<=n; j +=i){
                    isPrime[j] = false;
                }
            }
        } 
        for(int i=0; i<=n; i++){
            if(isPrime[i]) answer++;
        }
        
        return answer;
    }
}

파이썬 다섯번째

1쪽이 set을 사용하여 간결하나
2보다 범위가 더 넓어 처리양이 많아 처리속도가 느리다.

1

def solution(n):
    num=set(range(2,n+1))

    for i in range(2,int(n**0.5)+1):
        if i in num:
            num-=set(range(2*i,n+1,i))
            
    return len(num) 

2

def solution(n):
    isPrime = [True]*(n+1)
    end =int(n**0.5)+1
    isPrime[0]=isPrime[1]=False
    for i in range(2, end):
        if isPrime[i]:
            for j in range(i*i, n+1, i):
                isPrime[j] = False
                 
    answer = isPrime.count(True)
    return answer
profile
공부기록하기

0개의 댓글