์์: 2๋ณด๋ค ํฌ๊ณ ์๊ธฐ ์์ ์ธ์ ์ฝ์๋ฅผ ๊ฐ์ง์ง ์๋ ์
1. ์์ฐ์ N์ด ์์์ธ์ง ํ๋ณํ๋ ๋ฒ
: 2๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , ๋ฃจํธN๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋์ง ํ์ธํ๊ธฐ.
: ์๊ฐ๋ณต์ก๋ ๋ฃจํธN
* ์ ๋ฃจํธ N ๊น์ง?
์์ฐ์ N์ด ์์๊ฐ ์๋๋ผ๋ฉด N = a X b๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.(a์ b๋ ์์ฐ์์ด๊ณ N์ ์ฝ์ ์กฐํฉ)
์ด ๋, a > b๋ผ๋ฉด ๋ ์์ ์์น๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉฐ ํญ์ a <= b๋ก ๋ง๋ค ์ ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์ a์ b์ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ์์ ๊ฒฝ์ฐ๋ ๋ฃจํธ N์ผ ๋(์ ๊ณฑ๊ทผ์ผ ๋) ์ด๋ฏ๋ก ๋ฃจํธN๊น์ง๋ง ๊ฒ์ฌ๋ฅผ ํด๋ณด๋ฉด ๋ฉ๋๋ค.
โ
24๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. 24๋ ์์๊ฐ ์๋๋ฏ๋ก 24์ ์ฝ์๋ 1,2,3,4,6,8,12,24๊ฐ ์์ ๊ฒ๋๋ค. ์ด ๋, 24๋ฅผ ๋ ์์ ๊ณฑ์ผ๋ก ํํํด๋ณด๋ฉด 1X24, 2X12, 3X8, 4X6์ผ๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.์ฆ, ํํ ์์๋ฅผ ๊ตฌํ ๋ N/2๊น์ง ๊ณ์ฐํด๋ณด๋๋ฐ 1,2,3์ผ๋ก ๋๋์์ ๋ ์ด๋ฏธ 24, 12, 8 ๋ํ ์์๊ฐ ์๋๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋์์ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ์์ ๊ฒฝ์ฐ์ธ ๋ฃจํธN๊น์ง๋ง ๊ฒ์ฌ๋ฅผ ํด๋ณด๋ฉด ๋๋ ๊ฒ์ ๋๋ค.(๋ฃจํธ24 = 4.xxxx ์ด๋ฏ๋ก 4๊น์ง๋ง ๊ฒ์ฌํ๋ฉด ๋ฉ๋๋ค.)
* ์ฝ๋
#include <iostream>
using namespace std;
bool prime(int n) {
if (n > 2) {
return false;
}
for (int i = 2; i*i<=n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
bool result = prime(n);
cout << result << endl;
return 0;
}
2. N๊น์ง์ ์ ์ค์ ์์ ๊ฐ์ ๊ตฌํ๋ ๋ฒ
: ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
: ์๊ฐ๋ณต์ก๋ O(N*log(logN))
* ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ ?
2๋ถํฐ N๊น์ง ๋ชจ๋ ์๋ฅผ ์จ๋๊ณ , 2๋ถํฐ ๊ทธ ๋ฐฐ์๋ฅผ ๋ชจ๋ ์ง์ฐ๋ฉด์ ์์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋, ์์ง ์ง์์ง์ง ์์ ์๋ ์์๋ผ๊ณ ํ ์ ์์ผ๋ฏ๋ก, ์์๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒ์ ๋๋ค. ์ด ๋๋ ์ญ์ ์์์ ๋ณธ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ฃจํธN๊น์ง๋ง ๋ฐ๋ณต์คํํ๋ฉด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, 1๋ถํฐ 100๊น์ง๋ผ๋ฉด 11X11์ 121๋ก 100์ ๋๊ธฐ ๋๋ฌธ์ ๋์ด์ ์ํํ ํ์๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ 10๊น์ง๋ง ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ๊ตฌํ๋ฉด ๋๋๊น ์๊ฐ๋ณต์ก๋๊ฐ ํจ์ฌ ์งง๊ฒ ์ฃ ~
* ์ฝ๋
#include <iostream>
using namespace std;
int main() {
int prime[100]; //์์๋ฅผ ์ ์ฅํ ๋ณ์
int pn = 0; //์์์ ๊ฐ์
bool check[101] = { false, }; //์ง์์ก์ผ๋ฉด true
int n = 100; //100๊น์ง์ ์์
for (int i = 2; i <= n; i++) {
if (check[i] == false) {
prime[pn++] = i;
for (int j = i + i; j <= n; j += i) {
check[j] = true;
}
}
}
for (int i = 0; i < pn; i++) {
cout << prime[i] <<" ";
}
return 0;
}
๊ด๋ จ ๋ฌธ์
https://www.acmicpc.net/problem/1929
'๐ Coding Test Study > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm][C++] BFS/DFS (0) | 2023.04.25 |
---|---|
[C++][Programmers][์์ ํ์] ์์์ฐพ๊ธฐ (0) | 2023.04.23 |
[C++][์๋ฃ๊ตฌ์กฐ] Binary Tree(์ด์งํธ๋ฆฌ)๋ ? ๊ตฌํ๋ฒ์ ? (0) | 2022.09.06 |
[C++][์๋ฃ๊ตฌ์กฐ] Graph์ Tree์ ์ฐจ์ด? ๊ตฌํ๋ฒ์? (0) | 2022.09.06 |
[C++] 1์ฐจ์, 2์ฐจ์ ๋ฐฐ์ด ๋์ ํ ๋น ๋ฐ ํด์ (0) | 2022.03.06 |