want_AC_ing @ 2023-04-14 17:04:37
#include <stdio.h>
#include <math.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int n,i,j,k,m,ma,mb=0;
int an[10000],bn[10000],cn[10000];
if(a%2==0)a+=1;
for(n=a;n<=b;n+=2)//a到b的范围
{
j=n;//保护n的值
for(i=0;j;i++)//倒序存放在数组bn[]i位
{
bn[i]=j%10;
j/=10;
// printf("%d",bn[i]);
}
m=i-1;
for(k=0;k<=i-1;k++)//倒叙变顺序
{
an[k]=bn[m];
m--;
// printf("%d\n",an[k]);
}
for(k=0;k<=i;k++)//判断是否位回文数
{
ma=1;
if(an[k]!=bn[k])
{
ma=0;break;
}
}
if(ma){cn[mb]=n;mb++;}//储存回文数
//printf("cn=%d\n",cn[mb]);
}
/*for(i=0;i<=mb;i++)
{
//printf("%d\n",cn[i]);
}*/
int cd,vf;
for(i=0;i<=mb-1;i++)//判断质数
{
vf=1;
for(cd=2;cd*cd<=cn[i];cd++)
{
if(cn[i]%cd==0)
{
vf=0;break;
}
}
if(vf)printf("%d\n",cn[i]);
}
return 0;
}
by JJDDJJ @ 2023-04-15 20:27:48
只列举单数位数```cpp
using namespace std;
bool ss(int n)
{
if(n==1) return 0;
for(int x=2;x<=sqrt(n);++x)
if(n%x==0) return 0;
return 1;
}
bool hw(int n)//回文数函数
{
int s=0,m=n;
while(n)
{
s=s*10+n%10;
n/=10;
}
if(s==m) return 1;else return 0;
}
bool ws(int n)
{
if(n>=1000&&n<=9999||n>=100000&&n<=999999) return 0;
return 1;
}
int main()
{
int a,b;
cin>>a>>b;
if(b>9999999) b=9999999;//不用去管八位数
if(a==2) cout<<2<<endl;
if(a%2==0) a++;
for(int i=a;i<=b;i+=2)
{
if(!ws(i)) continue;
if(!hw(i)) continue;
if(!ss(i)) continue;
printf("%d\n",i);
}
return 0;
}
by JJDDJJ @ 2023-04-15 20:29:30
by want_AC_ing @ 2023-04-15 22:35:08
@JJDDJJ 没懂什么意思,双数位数不是也有回文质数吗