Follows 524.c (Total 44 lines):

/* @JUDGE_ID:4461XX 524 C */
/* A */
#include<stdio.h>
#include<math.h>
int isprime[50] , used[21] , ans[20] , n ;
void run( int level , int num )
{
	int i ;
	ans[level] = num ;
	used[num] = 1 ;
	if( level == n-1 ){
		if( !isprime[num+ans[0]] ) return ;
		for( i=0 ; i<n ; i++ ) printf( "%d " , ans[i] ) ;
		putchar( '\n' ) ;
	}
	else
		for( i=2 ; i<=n ; i++ )
			if( !used[i] && isprime[i+ans[level]] ){
				run( level+1 , i ) ;
				used[i] = 0 ;
			}
}
void make_prime( void )
{
	int i , j ;
	for( i=0 ; i<50 ; i++ ) isprime[i] = 1 ;
	for( i=3 ; i<50 ; i++ )
		for( j=2 ; j<=sqrt(i) ; j++ )
			if( !(i%j) ) isprime[i] = 0 ;
}
void main( void )
{
	int i , j ;
	make_prime() ;
	for( i=1 ; scanf( "%d" , &n )==1 ; i++ ){
		printf( "Case %d:\n" , i ) ;
		for( j=0 ; j<21 ; j++ ) used[j] = 0 ;
		for( j=2 , used[1]=ans[0]=1 ; j<=n ; j++ ){
			if( isprime[1+j] ) run( 1 , j ) ;
			used[j] = 0 ;
		}
		putchar( '\n' ) ;
	}
}

Back to statistics
Ya-Lin Huang (C)
huangyl@gmail.com