Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <vector>
  5.  
  6. using namespace std;
  7. const int pmax = 10000;
  8.  
  9. bool p[pmax + 1];
  10. vector<int> pnums;
  11.  
  12. void filter() {
  13. memset(p, true, pmax + 1);
  14. for (int i = 2; i <= pmax; i++) {
  15. if (!p[i]) continue;
  16. pnums.push_back(i);
  17. for (int j = i * 2; j <= pmax; j += i) {
  18. p[j] = false;
  19. }
  20. }
  21. }
  22.  
  23. void solve() {
  24. int n;
  25. cin >> n;
  26. int l = 0, r = pnums.size() - 1;
  27. int ml = l, mr = r;
  28. int mdiff = pmax + 1;
  29.  
  30. while(l <= r) {
  31. //printf("%d %d\n", p[l], p[r]);
  32. int sum = pnums[l] + pnums[r];
  33. if (sum < n) {
  34. l++;
  35. } else if (sum > n) {
  36. r--;
  37. } else {
  38. if (mdiff > (pnums[r] - pnums[l])) {
  39. mdiff = pnums[r] - pnums[l];
  40. ml = l;
  41. mr = r;
  42. }
  43. l++;
  44. r--;
  45. }
  46. }
  47. printf("%d %d\n", pnums[ml], pnums[mr]);
  48. }
  49.  
  50. int main()
  51. {
  52. filter();
  53. int t;
  54. cin >> t;
  55. while (t--) {
  56. solve();
  57. }
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement