#include<stdio.h>
#include<math.h>
void main()
{
int t,k,s,x,g[10],f[10],b[18];
long a,y;
for(k=1;k<=15;k++)
b[k]=0;
g[9]=1;s=0;
b[3]=b[5]=b[7]=b[11]=b[13]=1; // 5个奇素数标记
printf("8项素数和环:\n");
for(a=12345678;a<=18765432;a+=9) // 步长为9枚举8位数
{
t=0;y=a;
for(k=0;k<=9;k++)
f[k]=0;
for(k=1;k<=8;k++)
{
x=y%10;f[x]++; // 分离a的8个数字,用f数组统计x的个数
g[9-k]=x; // 用g数组记录a的第k位数字
y=y/10;
}
for(k=1;k<=8;k++)
if(f[k]!=1 || b[g[k]+g[k+1]]!=1)
t=1;
if(t==1) continue; // 有相同数字或相邻和非素,返回
s++;
printf("%d: 1",s); // 输出8项素数和环
for(k=2;k<=8;k++)
printf(",%d",g[k]);
printf("\n");
}
}
![]()