模板回文素数

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

 

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

回文素数

C语言问题 【函数与过程】回文素数

平方回文素数

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

05:素数回文数的个数

小航的算法日记素数判定