Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.1 kB
2
Indexable
Never
#include <iostream>
using namespace std;

int N;
int arr[30];
int art[30];

void reset(int ar[30])
{
	for (int i = 0; i < 30; i++)
	{
		ar[i] = 0;
	}
}

bool check(int ars)
{
	if (ars == 2)
	{
		return false;
	} 
	for (int i = 2; i <= ars / 2; i++)
	{
		if (ars % i == 0)
			return false;
	}
	return true;
}

void prime_ring(int& cnt, int k)
{
	if (k == N)
	{
		if (check(art[k - 1] + art[0]))
		{
			cnt++;
		}
	}

	for (int i = 1; i < N; i++)
	{
		if (arr[i] != 0)
		{
			if (check(arr[i] + art[k - 1]))
			{
				art[k] = arr[i];
				arr[i] = 0;
				prime_ring(cnt, k + 1);
				arr[i] = art[k];
			}
		}
	}
}

int main()
{
	int testcase;
	cin >> testcase;
	for (int tc = 1; tc <= testcase; tc++)
	{
		cin >> N;
		reset(arr);
		reset(art);
		for (int i = 0; i < N; i++)
		{
			cin >> arr[i];
		}
		// co dinh mot phan tu de xep vong nguyen to
		// xếp các số khac nhau sao cho tao thnh mot vong so trc + so sau la so nguyen to
		art[0] = arr[0];
		int cnt = 0;
		prime_ring(cnt, 1);
		cout << "Case " << tc << ": " << cnt << endl;
	}
}