https://www.acmicpc.net/problem/4948
๋ฌธ์
๋ฒ ๋ฅดํธ๋ ๊ณต์ค์ ์์์ ์์ฐ์ 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
ํ์ด
์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์์์ฌ๋ถ๋ฅผ ๊ตฌํ๊ณ
์ ๋ ฅ๋ฐ์ ๊ฐ๋ง๋ค ํด๋นํ๋ ๋ฒ์์ ์์์ ๊ฐฏ์๋ฅผ ์นด์ดํธํ๋ค.
10% ํ๋ ธ์ต๋๋ค๊ฐ ๋ฌ๋ค๋ฉด
n์ด ์์์ธ ๊ฒฝ์ฐ๋ ์ ๋์ค๋์ง ํ์ธํ์
n ๋ณด๋ค ํฌ๊ณ 2n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ด๋ผ๋ ๋ฒ์๊ฐ ์๊ธฐ ๋๋ฌธ์
n< <=2n ์ด์ฌ์ผํ๋ค.
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
const int INF = 247000;
int main() {
vector<bool> isPrime(INF, true);
isPrime[0] = isPrime[1] = false;
for(int i=2; i*i<INF; i++) {
if(!isPrime[i])
continue;
for(int j=i*i; j<INF; j+=i) {
isPrime[j] = false;
}
}
int n;
cin >> n;
while(n!=0) {
int cnt = 0;
for(int i=n+1; i<=n*2; i++) {
if(isPrime[i])
cnt++;
}
cout << cnt << "\n";
cin >> n;
}
}
'๐๏ธ ICPC Sinchon > Basic Math' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 9421๋ฒ: ์์์๊ทผ์ (0) | 2023.06.02 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2168๋ฒ: ํ์ผ ์์ ๋๊ฐ์ (0) | 2023.05.31 |
[BOJ][C++] ๋ฐฑ์ค 2108๋ฒ: ํต๊ณํ (0) | 2023.05.30 |
[BOJ][C++] ๋ฐฑ์ค 2981๋ฒ: ๊ฒ๋ฌธ (0) | 2023.01.24 |
[BOJ][C++] ๋ฐฑ์ค 17087๋ฒ: ์จ๋ฐ๊ผญ์ง 6 (0) | 2023.01.24 |