반응형
음... 옛날에 저 에라토스테네스의 체 를 본적이 있어가지고 금방 푼 것 같다.
그냥 IsPrime만 돌리면 시간초과 바로 나버리니 dp로 풀어야함.
#include <bits/stdc++.h>
using namespace std;
uint8_t prime[1000001];
bool IsPrime(int a){
bool flag = true;
for(int i =a-1 ; i>1; i--)
{
if(a%i ==0){
return false;
}
}
return true;
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int N, M;
cin >> N >> M;
//아직 미탐색 0, prime num = 1, 소수 아니면 2.
prime[1]=2;
for(int i =2; i<=1000000;i++){
if(prime[i] ==0){
if(IsPrime){
prime[i] =1; //처음 탐색했는데 소수면 1 표시해놓고
int cnt =2;
while(1)
{
if(i*cnt>1000000) break;
prime[i *cnt] =2; // 그 소수에 *2, *3,*4들은 다 소수가 아니므로 2로 체크함.
cnt++;
}
}
else prime[i] = 2; // 소수가 아니면 2
}
}
for(int i = N; i<=M; i++)
{
if(prime[i] ==1) cout << i << '\n';
}
}
반응형
'Algorithm > Problem Solve' 카테고리의 다른 글
[백준 1012] 유기농 배추 ( BFS ) (0) | 2020.12.15 |
---|---|
[백준 1003] 피보나치 함수 (DP문제) (0) | 2020.12.15 |
[백준 10866번] 덱 (0) | 2020.12.14 |
[백준 11866번] 요세푸스 문제0 (0) | 2020.12.13 |
[백준 11650번] 좌표 정렬하기 (vector sort compare사용) (0) | 2020.12.13 |