public class PrimeUtil {
public static final List<Integer> PRIMES = Arrays.asList(1,2,3,5,7,11,13,17,19,23,27);
private Set<List<Integer>> result = new HashSet();
public Set<List<Integer>> getResult() {
return result;
}
public void run(int n){
result.clear();
List<Integer> numbers = new ArrayList();
for (int i=1; i<=n; i++) {
numbers.add(i);
}
permute(numbers, 1);
printResult();
}
public void printResult(){
for (List<Integer> list : result)
System.out.println(Arrays.toString(list.toArray()));
}
private void permute(List<Integer> list, int k){
for (int i=k; i<list.size(); i++) {
Collections.swap(list, i, k);
permute(list, k+1);
Collections.swap(list, i, k);
}
if (k == list.size()-1) {
if (verifyPrimes(list)) {
result.add(list);
}
}
}
public static boolean verifyPrimes(List<Integer> list) {
for (int i=0; i<list.size()-1; i++){
int odd = list.get(i);
int even = list.get(i+1);
if (!isPrime(odd + even)) {
return false;
}
}
return true;
}
public static boolean isPrime(int i) {
return PRIMES.contains(i);
}
public static void main(String[] args) {
if (args.length==0) {
System.out.println("Usage: ava PrimeUtil [even number] java PrimeUtil 6");
return;
}
boolean isValidArg = false;
try {
int n = Integer.pareInt(args[0]);
isValidArg = (n<16 && n%2 ==0);
} catch (NumberFormatException e) {
}
if (!isValidArg) {
System.out.println("Argument should be an even number less than 16.");
return;
}
PrimeUtil util = new PrimeUtil();
util.run(n);
}
}