码迷,mamicode.com
首页 > 其他好文 > 详细

回文素数

时间:2017-01-26 12:20:41      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:using   ios   src   str   超时   ++   std   namespace   out   

技术分享

思路:

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

代码:

#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;

          }
    }

}

技术分享

回文素数

标签:using   ios   src   str   超时   ++   std   namespace   out   

原文地址:http://www.cnblogs.com/lmloo/p/6351407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!