Dang_Quan_10_Tin

EULER HSGTPVinh L9 2019-2020

Jan 8th, 2022 (edited)
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #define task "EULER"
  2.  
  3. #include <iostream>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7.  
  8. using ll = long long;
  9. using ld = long double;
  10.  
  11. constexpr int N = 1e5 + 5;
  12. int m, primes[N], f[N];
  13.  
  14. // O(n) Prime Sieve
  15. void Prepare()
  16. {
  17.     for (int i = 2; i < N; ++i)
  18.     {
  19.         if (!f[i])
  20.             f[i] = primes[++m] = i;
  21.         for (int j = 1; j <= m && primes[j] * i < N; ++j)
  22.             f[primes[j] * i] = primes[j];
  23.     }
  24. }
  25.  
  26. // Prime Checker
  27. bool IsPrime(int v)
  28. {
  29.     if (v < 2)
  30.         return false;
  31.     if (v % 2 == 0)
  32.         return v == 2;
  33.  
  34.     for (int i = 2; primes[i] * primes[i] <= v; ++i)
  35.         if (v % primes[i] == 0)
  36.             return false;
  37.     return true;
  38. }
  39.  
  40. void Solve()
  41. {
  42.     int t;
  43.     cin >> t;
  44.  
  45.     while (t--)
  46.     {
  47.         int n;
  48.         cin >> n;
  49.  
  50.         for (int i = 1; i <= m && primes[i] <= n; ++i)
  51.             if (IsPrime(n - primes[i])) // Số còn lại có phải số nguyên tố
  52.             {
  53.                 cout << primes[i] << " " << n - primes[i] << '\n';
  54.                 break;
  55.             }
  56.     }
  57. }
  58.  
  59. int32_t main()
  60. {
  61.     ios::sync_with_stdio(0);
  62.     cin.tie(0);
  63.     cout.tie(0);
  64.     if (fopen(task ".INP", "r"))
  65.     {
  66.         freopen(task ".INP", "r", stdin);
  67.         freopen(task ".OUT", "w", stdout);
  68.     }
  69.  
  70.     Prepare();
  71.     Solve();
  72. }
  73.  
Add Comment
Please, Sign In to add comment