fork(2) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4. #include <vector>
  5. #include <bitset>
  6. #include <stdio.h>
  7. #include <math.h>
  8. using namespace std;
  9. typedef std::vector<int> vi;
  10. typedef std::vector<pair<int, int> > vii;
  11. //----------Main source code -----------------//
  12. int n, ring[17];
  13. bitset<32> prime;
  14. bitset<17> state;
  15.  
  16. void rcr(int i){
  17. if(i==n-1){
  18. if(prime[1+ring[i-1]]){
  19. cout<<ring[0];
  20. for(int j=1;j<n-1;j++)
  21. cout<<" "<<ring[j];
  22. cout<<endl;
  23. }
  24. }
  25. for(int j=2;j<n;j++)
  26. if(state[j]&&prime[ring[i-1]+j]){
  27. ring[i]=j;
  28. state.reset(j);
  29. rcr(i+1);
  30. state.set(j);
  31. }
  32. }
  33. int main() {
  34. //-prime sieve-------
  35. prime.set();
  36. for(int i=2;i<32;i++)
  37. if(prime[i])
  38. for(int j=2*i;j<32;j+=i)
  39. prime.reset(j);
  40.  
  41. int ca =1;
  42. while(cin.good()&&cin>>n){
  43. n++;
  44. state.set();
  45. ring[0]=1;
  46. if(ca!=1) cout<<endl;
  47. printf("Case %d:\n", ca++);
  48. rcr(1);
  49. }
  50. return 0;
  51. }
Success #stdin #stdout 0s 3300KB
stdin
6
8
stdout
Case 1:
1 4 3 2 5 6
1 6 5 2 3 4

Case 2:
1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2