将1,2,3,4……20这20个自然数排成一个圈,使任意两个相邻的自热数之和均为素数。
希望读者可以耐心看完我的代码。
#include <stdio.h>
#include <math.h>
bool sushu(int m)//判断是否是素数
{
int i;
for(i = 2; i <= sqrt(m) ; i ++)
{
if(m % i == 0)
break;
else
continue;
}
if(i > sqrt(m))
return true;
else
return false;
}
void quan(int a[], int b[], int m, int j)//围圈
{
int i;
for(i = 1; i < m; i ++)
{
if(a[i] != b[j] && sushu(b[j] + a[i]) && a[i] != 0)
{
b[++ j] = a[i];//如果满足条件就将a[i]加到数组b中。
a[i] = 0; //同时将a[i]变成0
quan(a, b, m, j);//继续
}
}
}
int main()
{
int a[20], b[20], i, j;
printf("*******初始化数组**********\n");
for(i = 0; i < 20; i ++)
a[i] = i + 1;
j = 0;
b[j] = a[0];//将b[0]初始化为a[0]
a[0] = 0;
printf("b[%d] = %d\n",j,b[j]);
quan(a, b, 20, j);
printf("\n");
printf("*******围成的圈是**********\n");
for(i = 0; i < 20; i ++)
printf("%d ",b[i]);
printf("\n");
return 0;
}
运行的结果是:1 2 3 4 7 6 5 8 9 10 13 16 15 17 12 11 20 19 -858993460,为什么会是这个结果呢?想了好久还是想不明白,希望高手可以帮帮指点指点。