본문 바로가기

문제풀이/C++

[C++] 소수의 개수

728x90

[목적]

자연수 N을 입력하면 1부터 N까지의 소수의 개수를 출력한다.

제한시간은 1초이다.

 

[입력 예제]

20

 

[출력 예제]

8

 

20이 입력이 되면 1부터 20까지의 소수는 [2, 3, 5, 7, 11, 13, 17, 19]로 총 8개이므로 8을 출력한다.


[코드]

#include <iostream>

using namespace std;

int main(void) {

    int num;
	
    cin >> num;
    int cnt=num-1;
	
    for(int i=2; i<=num; i++){
        for(int j=2; j*j<=i; j++){
            if(i%j==0) {
                cnt--;
                break;
            }
        }
    }
	
    cout << cnt;

    return 0;
}

1. 숫자를 입력받는다.

2. cnt변수에는 입력받은 숫자보다 1작은 값을 입력한다 (소수에서 1은 소수가 아니기 때문)

3. 첫번째 for문을 통해 'i'가 2부터 시작하여 입력받은 숫자까지 돌며 두번째 for문에서 소수인지 판별한다.

4. j * j가 i보다 작을 때 까지 for문을 돌려 i와 j의 모듈러 연산 값이 0이면은 소수가 아니기에 cnt값을 1 빼준 뒤 for문을 빠져나오며 다음 값을 계산한다.

5. cnt 값을 출력한다.

 

[실행 결과]

해당 사진에서는 4초가 넘게 걸렸다고 출력되었지만 채점을 돌려보면 Success가 떳다..~

 

jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2079&sca=20

 

JUNGOL

 

www.jungol.co.kr

[출처 - jungol]

소수의 개수를 구하는 또 다른 코드인데 시간면에서 더 좋은 코드라 생각하여 첨부한다...

728x90
반응형

'문제풀이 > C++' 카테고리의 다른 글

[C++] 선생님 퀴즈  (0) 2021.01.02
[C++] Anagram  (0) 2021.01.01
[C++] 뒤집은 소수  (0) 2020.12.30
[C++] 가장 많이 사용된 자릿수  (0) 2020.12.29
[C++] 숫자의 총 개수 (small)  (0) 2020.12.29