๋ฌธ์
๋ฒ ๋ฅดํธ๋ ๊ณต์ค์ ์์์ ์์ฐ์ n์ ๋ํ์ฌ, n๋ณด๋ค ํฌ๊ณ , 2n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ ์ ์ด๋ ํ๋ ์กด์ฌํ๋ค๋ ๋ด์ฉ์ ๋ด๊ณ ์๋ค. ์ด ๋ช ์ ๋ ์กฐ์ ํ ๋ฒ ๋ฅดํธ๋์ด 1845๋ ์ ์ถ์ธกํ๊ณ , ํํ๋ํฐ ์ฒด๋น์ผํ๊ฐ 1850๋ ์ ์ฆ๋ช ํ๋ค.
์๋ฅผ ๋ค์ด, 10๋ณด๋ค ํฌ๊ณ , 20๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ 4๊ฐ๊ฐ ์๋ค. (11, 13, 17, 19) ๋, 14๋ณด๋ค ํฌ๊ณ , 28๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์๋ 3๊ฐ๊ฐ ์๋ค. (17,19, 23)
์์ฐ์ n์ด ์ฃผ์ด์ก์ ๋, n๋ณด๋ค ํฌ๊ณ , 2n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ์ผ์ด์ค๋ n์ ํฌํจํ๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ ๋ ฅ์ ๋ง์ง๋ง์๋ 0์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์, n๋ณด๋ค ํฌ๊ณ , 2n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ํ
- 1 ≤ n ≤ 123,456
ํ์ด
- ์ ๋ ฅ์ด 0์ผ ๋ ์ ๋ ฅ ์ข ๋ฃ
- N ์ด๊ณผ 2N ์ดํ
์์ ๋ ์กฐ๊ฑด์ ์๊ฐํ๋ฉด ์ง๋ ๋ฌธ์ ์ ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก ํ ์ ์๋ค.
#include <iostream>
#include <cmath>
using namespace std;
int MAX = 123456*2;
int main() {
int N=-1, cnt = 0, limit;
bool isPrime[MAX+1];
while (true){
cin >> N;
if (N == 0)
break;
fill_n(isPrime, MAX+1, true);
isPrime[0] = false;
isPrime[1] = false;
for (int i=2; i<=sqrt(2*N); i++){
if (isPrime[i]){
for (int j=2*i; j<=2*N; j+=i){
if (2*N > MAX + 1)
break;
isPrime[j] = false;
}
}
}
for (int i = N+1; i<=2*N; i++){
if (isPrime[i])
cnt += 1;
}
cout << cnt << "\n";
cnt = 0;
}
}
https://www.acmicpc.net/problem/4948
'โจ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1085๋ฒ : ์ง์ฌ๊ฐํ์์ ํ์ถ (0) | 2021.08.12 |
---|---|
[๋ฐฑ์ค/C++] 9020๋ฒ : ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2021.08.10 |
[๋ฐฑ์ค/C++] 1929๋ฒ : ์์ ๊ตฌํ๊ธฐ(์๊ฐ ์ด๊ณผ, ์๋ผํ ์คํ ๋ค์ค์ ์ฒด) (0) | 2021.08.07 |
[๋ฐฑ์ค/C++] 11653๋ฒ : ์์ธ์๋ถํด (0) | 2021.08.07 |
[๋ฐฑ์ค/C++] 2581๋ฒ : ์์ (0) | 2021.08.06 |
๋๊ธ