๋ฌธ์
M์ด์ N์ดํ์ ์์๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ M๊ณผ N์ด ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. (1 ≤ M ≤ N ≤ 1,000,000) M์ด์ N์ดํ์ ์์๊ฐ ํ๋ ์ด์ ์๋ ์ ๋ ฅ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
ํ ์ค์ ํ๋์ฉ, ์ฆ๊ฐํ๋ ์์๋๋ก ์์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์ด์ ๋ฌธ์ ๋ฅผ ํ์๋ ๋ฐฉ์๋๋ก ํ์ผ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ์ค๋ช ์๋ ๋์์๋ฏ, ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
01. ๋ฐฐ์ด์ ๋ง๋ค์ด 0๊ณผ 1์ ์ ์ธํ ์๋ฅผ true๋ก ์ด๊ธฐํํ๋ค.
02. root(max)๊น์ง ๋๋ฉด์ ์์์ n๋ฐฐ์, ์ฆ ์์๊ฐ ์๋ ๊ฐ์ false๋ก ํ์ํ๋ค
03. ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ for๋ฌธ์ ๋๋ฉด์ ์์์ธ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ๊ฐ ์ ํ๋ฆฌ์ง ์์ ๊ฒฝ์ฐ ์๋ ํ์ ์ฐธ๊ณ ํ๋ฉด ์ฝ๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋์๋์๋ ๊ฒ์ 5๋ฒ๊ณผ 6๋ฒ์ด์๋ค.
https://www.acmicpc.net/board/view/39203
05. endl์ ๋ฒํผ๋ฅผ flushํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋๋ฆฌ๋ค. '\n'์ ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค
(endl ์ฌ์ฉํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋๋๋ฐ. \n์ ์ฌ์ฉํ๋ ๋ฐ๋ก ํด๊ฒฐ๋์๋ค!)
+ cout ๋์ printf๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋์์ด ๋๋ค๋ ๊ธ๋ ์์๋ค.
06. ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ๊ตฌํํ ๋ ํํ ์์ชฝ ๋ฃจํ๋ฅผ int j = i * i๋ก ์์ํ๋๋ฐ, ์ด๋ ๊ฒ ํ๋ฉด i๊ฐ 46341์ด ๋๋ ์๊ฐ๋ถํฐ i * i๊ฐ int์ ๋ฒ์๋ฅผ ์ด๊ณผํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค. long long์ ์ฌ์ฉํ๊ฑฐ๋, i * i ๋์ i * 2๋ถํฐ ์์ํ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int min, max;
cin >> min >> max;
bool isPrime[max+1];
fill_n(isPrime, max+1, true);
isPrime[0] = false;
isPrime[1] = false;
for (int i=2; i<=sqrt(max); i++){
// ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์๋ค
if (isPrime[i] == true){
// ๊ธฐ์กด ์์ n๋ฐฐ์๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๋ค
// ex) i = 2์ด๋ฉด 2*2, 2*3, 2*4, ...๋ฅผ false๋ก ํ์
for (int j = i*2; j<=max; j+=i)
isPrime[j] = false;
}
}
for (int i=min; i<=max; i++){
if (isPrime[i])
cout << i << "\n";
}
}
์์ ๋ฌธ์ ๊ฐ ์ฌ๋ฌ ๊ฐ ์์ด์ ์ ์ ์ต์ํด์ง๋ค๊ณ ์๊ฐํ๋๋ฐ ํ ๋๋ง๋ค ์๋ก์ด ๊ฐ๋ ์ ์๊ฒ ๋์ด์ ์ ๊ธฐํ๋ค!!
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 9020๋ฒ : ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2021.08.10 |
---|---|
[๋ฐฑ์ค/C++] 4948๋ฒ : ๋ฒ ๋ฅดํธ๋ ๊ณต์ค (0) | 2021.08.08 |
[๋ฐฑ์ค/C++] 11653๋ฒ : ์์ธ์๋ถํด (0) | 2021.08.07 |
[๋ฐฑ์ค/C++] 2581๋ฒ : ์์ (0) | 2021.08.06 |
[๋ฐฑ์ค/C++] 1978๋ฒ : ์์ ์ฐพ๊ธฐ (0) | 2021.08.05 |
๋๊ธ