某古寺的一块石碑上依稀刻有一些神秘的数字。
专家研究发现:这些数字是由1,3,5,7,9这5个奇数排列组成的5为素数,且同时去掉它的最高位与最低位数字后的3位数还是素数,同时去掉它的高二位与低二位数字后的一位数还是素数。因此,人们把这些神秘的素数成为金蝉素数,喻意金蝉脱壳之后仍然为美丽的金蝉。试求出石碑上的金蝉素数。
思路:全排列。与组素数、好好学习等题目相似。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int i,j,s;
int a[5]={1,3,5,7,9};
do
{
s=a[0]*10000 + a[1]*1000 + a[2]*100 + a[3]*10 +a[4];
for (i=2;i<s;i++)
{
if (s%i==0)
break;
}
if (i==s)//5位是素数
{
s=a[1]*100+a[2]*10+a[3];
for (i=2;i<s;i++)
{
if (s%i==0)
break;
}
if (i==s)//3w位是素数
{
for (i=2;i<a[2];i++)
{
if (a[2]%i==0)
break;
}
if (i==a[2])//中间是素数
{
for (i=0;i<5;i++)
cout<<a[i];
cout<<endl;
}
}
}
}while (next_permutation(a,a+5));
return 0;
}