素数环

将1、2、...、20这20个数排成一排,使得相邻的两个数之
和为一个素数,且首尾两数字之和也为一个素数。

#include"stdio.h"
#include"stdlib.h"
#include"debug.h"

typedef struct linkque
{
int num;
struct linkque *next;
}linkque_int;

linkque_int *front = NULL;
linkque_int *rear = NULL;


void enque (int num)
{
linkque_int *q = (linkque_int *)malloc( sizeof(linkque_int) );
if( front == NULL)
{
front = q;
q->num = num;
rear = q;
rear->next = NULL;
}
else
{
rear->next = q;
q->num = num;
rear = q;
rear->next = NULL;
}

}

int deque ()
{
if(front != NULL)
{
//debug_msg("%d\n",__LINE__);
int value;
value = front->num;
linkque_int *q = front;
front = front->next;
free(q);
return value;
}
else
{
printf("队列为空\n");
exit(-1);
}
}

int isprime(int sum)
{
int i;
int flag = 0;
for(i = 1; i <= sum/2 ;i++)
{
if( sum%i == 0)
{
flag++;
}
}
if( flag == 1)
{
return 1;
}
else
{
return 0;
}
}

int main()
{
printf("1-20\n");
printf("1 ");
int i = 2;
int value;
int k = 1;
while(i <= 20)
{
enque(i);
i++;
}
#if 1
while(front != NULL)
{
value = deque();
if( isprime(value + k) )
{
// debug_msg("%d\n",__LINE__);
k = value;
printf("%d ",value);
}
else
{
enque(value);
}
}
#endif
printf("\n");
return 0;
}

你可能感兴趣的:(素数环)