回文素数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回文素数相关的知识,希望对你有一定的参考价值。

技术分享

思路:

如果是九位数一个一个加会超时,那么就将各个位数分离开,控制对称位置相等,所以时间大大减少,然后采用递归

代码:

#include<iostream>
#include<cmath>
using namespace std;
int m=0,b[6000]={0};
void vp(int a[],int n,int t)
{
  int i,q,s=0;
  if(t!=n/2+(n%2))
  for(i=0;i<=9;i++)
    {a[n-t-1]=a[t]=i;
     vp(a,n,t+1);
   }
    else
    {for(i=n-1,q=1;i>=0;i--,q*=10)
     s+=a[i]*q;
     for(i=2;i<=sqrt(s);i++)     //判断是否是素数
        if(s%i==0)
      break;
      if(i>sqrt(s))
      {b[m]=s;
        m++;
      }
    }
}
int main()
{
  int n,i,a[9]={0};
  cin>>n;
  if(n==1)
     cout<<4<<endl<<2<<" "<<3<<" "<<5<<" "<<7<<endl;
   else
    {for(i=1;i<=9;i=i+2)
      {a[n-1]=a[0]=i;
       vp(a,n,1);
      }
       cout<<m<<endl;
       if(m!=0)      //如果不存在回文素数则不输出
      {for(i=0;i<m-1;i++)
      cout<<b[i]<<" ";
        cout<<b[m-1]<<endl;

          }
    }

}

技术分享









































以上是关于回文素数的主要内容,如果未能解决你的问题,请参考以下文章

hdu-1431 素数回文

编程找出所有三位回文素数 用c语言

[牛客网]回文素数

[牛客网]回文素数

回文素数

回文素数-2015校内选拔第三题