fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <queue>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int n;
  9. queue<int> res;
  10.  
  11. bool nto(int x) {
  12. if (x < 2)
  13. return false;
  14. for (int i = 2; i <= sqrt(x); i++)
  15. if (x % i == 0)
  16. return false;
  17. return true;
  18. }
  19.  
  20. int len(int x) {
  21. int d = 1;
  22. while (x / 10 != 0) {
  23. x /= 10;
  24. d++;
  25. }
  26. return d;
  27. }
  28. void solve(int n) {
  29. if (n == 1) {
  30. res.push(2);
  31. res.push(3);
  32. res.push(5);
  33. res.push(7);
  34. return;
  35. }
  36. solve(n - 1);
  37.  
  38. bool stop = false;
  39. while (!stop) {
  40. int x = res.front();
  41. if (len(x) == n)
  42. stop = true;
  43. else {
  44. for (int i = 1; i < 10; i++)
  45. if (nto(x*10 + i)) {
  46. res.push(x*10 + i);
  47. }
  48. res.pop();
  49. }
  50. }
  51. }
  52.  
  53.  
  54. int main() {
  55. cin>> n;
  56. solve(n);
  57. int d = 0;
  58. while (!res.empty()) {
  59. cout<< ++d<< " "<< res.front()<< endl;
  60. res.pop();
  61. }
  62. }
Success #stdin #stdout 0s 5280KB
stdin
5
stdout
1 23333
2 23339
3 23399
4 23993
5 29399
6 31193
7 31379
8 37337
9 37339
10 37397
11 59393
12 59399
13 71933
14 73331
15 73939