반응형
programmers.co.kr/learn/courses/30/lessons/12921
아리스토텔레스의 체를 이용해 소수를 찾는 문제였습니다.
풀이방법
1. 100만까지의 소수 아닌 것을 체크해줍니다.
2. 2부터 n까지 중 체크가 안되어 있는 것은 소수이므로 답을 더해줍니다.
Code
#include <bits/stdc++.h>
using namespace std;
void primeInit(int ck[]){
for(int i = 2 ; i <= 1000000; i++){
if(ck[i]) continue;
for(int j = i+i; j <= 1000000; j+=i){
ck[j] = 1;
}
}
}
int solution(int n) {
int answer = 0;
int ck[1000001];
memset(ck,0,sizeof(ck));
primeInit(ck);
for(int i= 2; i <= n; i++) if(!ck[i]) answer++;
return answer;
}
'Algorithm > Math' 카테고리의 다른 글
(C++) - 프로그래머스(연습문제) : 행렬의 곱셈 (0) | 2021.03.06 |
---|---|
(C++) - 프로그래머스(연습문제) : 최대공약수와 최소공배수 (0) | 2021.03.05 |
(C++) - 프로그래머스(연습문제) : 124 나라의 숫자 (0) | 2021.02.24 |
(C++) - 백준(BOJ) 1173번 : 운동 (0) | 2021.02.09 |
(C++) - 백준(BOJ) 6502번 : 동혁 피자 답 (0) | 2021.01.20 |