diff --git "a/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/1735.cpp" "b/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/1735.cpp" index bb09f47..745116b 100644 --- "a/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/1735.cpp" +++ "b/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/1735.cpp" @@ -33,6 +33,11 @@ vector add(int a1, int a2, int b1, int b2) { } int main() { + //입출력 속도 향상 + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + int a1, a2, b1, b2; cin >> a1 >> b1; diff --git "a/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/2840.cpp" "b/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/2840.cpp" index 9119fa8..3173587 100644 --- "a/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/2840.cpp" +++ "b/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/2840.cpp" @@ -4,7 +4,7 @@ using namespace std; -vector random (int n, int k) { +vector lucky_wheel (int n, int k) { vector v(n, '?'); //처음 가르킨 곳이 v[0] 알파벳 int cnt; int order = 0; @@ -43,11 +43,16 @@ vector random (int n, int k) { int main() { + //입출력 속도 향상 + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + int n, k; cin >> n >> k; vector result; - result = random(n, k); + result = lucky_wheel(n, k); if(result[0] == '!'){ cout << '!'; diff --git "a/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/6588.cpp" "b/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/6588.cpp" index 1380f3d..cddc463 100644 --- "a/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/6588.cpp" +++ "b/03_\354\240\225\354\210\230\353\241\240/\355\225\204\354\210\230/6588.cpp" @@ -1,25 +1,50 @@ #include -#include +#include #include -/* -b - a가 가장 큰 경우가 언제일지 잘 생각해보아요! -n = a + b를 만족시키는 두 소수들을 어디서부터 탐색하면 좋을까요? -*/ using namespace std; -int getPrime() { +vector prime(1000001, true); // 인덱스 0부터 1000000까지 사용 -} +// 에라토스테네스의 체 이용하기 +void findPrime() { + prime[0] = prime[1] = false; + for (int i = 2; i * i <= 1000000; ++i) { + if (prime[i]) { + for (int j = i * i; j <= 1000000; j += i) { + prime[j] = false; + } + } + } +} int main() { + //입출력 속도 향상 + ios::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + + findPrime(); int input; cin >> input; - while(input != 0) { - getPrime(); + + bool check = false; + for(int i=3; i <= input/2; i++) { + if(prime[i] && prime[input-i]) { + cout << input << " = " << i << " + " << input-i << '\n'; + check = true; + break; + } + } + + if(!check) { + cout << "Goldbach's conjecture is wrong." << '\n'; + } + cin >> input; } + } \ No newline at end of file