模板回文素数
Posted kannyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板回文素数相关的知识,希望对你有一定的参考价值。
#include <set> #include <map> #include <list> #include <ctime> #include <cmath> #include <queue> #include <stack> #include <string> #include <cstdio> #include <vector> #include <cstring> #include <cstdlib> #include <sstream> #include <iostream> #include <algorithm> using namespace std; #define MAX 26 #define INF 0x3f3f3f3f #define pi acos(-1) #define mod 10005 typedef pair<int,int> pii; typedef pair<string,int> psi; typedef __int64 ll; int a,b,lena,lenb; char r[15]; int getlen(int n) { int len=0; while(n!=0) { n/=10; len++; } return len; } int jud(int n) { if(n<a||n>b)return 0; for(int i=2;i<=sqrt(n);i++) if(n%i==0)return 0; return 1; } int p(int a,int n) { int i,j,sum=1; for(i=1;i<=n;i++)sum*=a; return sum; } int getval(int len) { int sum=0,i,j; for(i=1;i<=len;i++) sum+=r[i]*p(10,i-1); return sum; } //这是位数为len的回文数构造 void creat(int len,int pos) { int i,t,hlen=(len+1)/2; for(i=0;i<10;i++) { if(!i&&pos==1)continue; r[pos]=r[len+1-pos]=i; if(pos<hlen) { pos++; creat(len,pos); pos--; } else { t=getval(len); if(jud(t))printf("%d ",t); } } } void ok(int lena) { int i; memset(r,0,sizeof(r)); for(i=lena;i<=lenb;i++) creat(i,1); } int main() { cin>>a>>b; lena=getlen(a); lenb=getlen(b); ok(lena); return 0; }
以上是关于模板回文素数的主要内容,如果未能解决你的问题,请参考以下文章