#include <iostream>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
const int maxn = 20;
int ans[maxn] = { 1 }, vis[maxn] = {1}, n;
int prime[400] = {0};
void GetPrime()
{
for (int i = 2; i <= 20; i++) {
if (prime[i])continue;
for (int j = i * i; j <= 400; j+=i) {
prime[j] = 1;
}
}
}
void GetResult(int cur) {
if (cur == n && !prime[ans[0] + ans[n - 1]]) {
for (int i = 0; i < n; i++) {
if (i) cout << " " << ans[i];
else cout << ans[i];
}
cout << endl;
}
else {
for (int i = 2; i <= n; i++) {
if (!vis[i] && !prime[i + ans[cur-1]] ) {
vis[i] = 1;
ans[cur] = i;
GetResult(cur + 1);
vis[i] = 0;
}
}
}
}
int main()
{
int cnt = 0;
GetPrime();
while (cin >> n) {
if (cnt) cout << endl;
cout << "Case " << ++cnt << ":" << endl;
GetResult(1);
}
return 0;
}
例题7-4(uva-524)
最新推荐文章于 2023-04-17 14:45:57 发布