Pay attention to the sum of the last one and 1 !!
[Cpp]
# Include "stdio. h"
# Include "string. h"
Int prime [44];
Int mark [22];
Int a [22], n;
Void dfs (int k, int m)
{
A [k] = m;
Int I;
If (k = n)
{
// Pay attention to the sum of the last one and 1 !!
If (! Prime [m + 1]) return;
For (I = 1; I <n; I ++)
Printf ("% d", a [I]);
Printf ("% d \ n", a [I]);
Return;
}
For (I = 2; I <= n; I ++)
{
If (prime [I + m] &! Mark [I])
{
Mark [I] = 1;
Dfs (k + 1, I );
Mark [I] = 0;
}
}
}
Int main ()
{
Int I, k;
Memset (prime, 0, sizeof (prime ));
Prime [2] = prime [3] = prime [5] = prime [7] = 1;
Prime [11] = prime [13] = prime [17] = prime [19] = prime [23] = 1;
Prime [29] = prime [31] = prime [37] = prime [41] = 1;
K = 1;
While (scanf ("% d", & n )! =-1)
{
Memset (mark, 0, sizeof (mark ));
Printf ("Case % d: \ n", k ++ );
Dfs (1, 1 );
Printf ("\ n ");
}
Return 0;
}
# Include "stdio. h"
# Include "string. h"
Int prime [44];
Int mark [22];
Int a [22], n;
Void dfs (int k, int m)
{
A [k] = m;
Int I;
If (k = n)
{
// Pay attention to the sum of the last one and 1 !!
If (! Prime [m + 1]) return;
For (I = 1; I <n; I ++)
Printf ("% d", a [I]);
Printf ("% d \ n", a [I]);
Return;
}
For (I = 2; I <= n; I ++)
{
If (prime [I + m] &! Mark [I])
{
Mark [I] = 1;
Dfs (k + 1, I );
Mark [I] = 0;
}
}
}
Int main ()
{
Int I, k;
Memset (prime, 0, sizeof (prime ));
Prime [2] = prime [3] = prime [5] = prime [7] = 1;
Prime [11] = prime [13] = prime [17] = prime [19] = prime [23] = 1;
Prime [29] = prime [31] = prime [37] = prime [41] = 1;
K = 1;
While (scanf ("% d", & n )! =-1)
{
Memset (mark, 0, sizeof (mark ));
Printf ("Case % d: \ n", k ++ );
Dfs (1, 1 );
Printf ("\ n ");
}
Return 0;
}