mcz123321 @ 2024-05-29 22:20:46
#include<bits/stdc++.h>
using namespace std;
bool ss(long long a)
{
if(a<2) return 0;
for(int i=2;i<=sqrt(a);i++)
{
if(a%i==0) return 0;
}
return 1;
}
bool hws1(long long a)
{
int b;
while(a!=0)
{
b++;
a/=10;
}
return b%2;
}
int qz(long long a)
{
int b=1;
while(a!=0)
{
a/=10;
b*=10;
}
return b/10;
}
int main()
{
long long a,b;
cin>>a>>b;
for(long long j=qz(a);j<b;j*=10)
{
if(j==0)j++;
else if(hws1(j))//9位
{
if(j==1)//1
{
for(int i=1;i<10;i+=2)
if(ss(i)&&i>=a&&i<=b) cout<<i<<endl;
}
if(j==100)//3
{
for(int i=1;i<=9;i++)
for(int x=0;x<=9;x++)
if(ss(i*100+x*10+i)&&i*100+x*10+i>=a&&i*100+x*10+i<=b) cout<<i*100+x*10+i<<endl;
}
if(j==10000)//5
{
for(int i=1;i<=9;i+=2)
for(int x=0;x<=9;x++)
for(int y=0;y<=9;y++)
if(ss(i*10000+x*1000+y*100+x*10+i)&&i*10000+x*1000+y*100+x*10+i>=a&&i*10000+x*1000+y*100+x*10+i<=b) cout<<i*10000+x*1000+y*100+x*10+i<<endl;
}
if(j==1000000)//7
{
for(int i=1;i<=9;i+=2)
for(int x=0;x<=9;x++)
for(int y=0;y<=9;y++)
for(int z=0;z<=9;z++)
if(ss(i*1000000+x*100000+y*10000+z*1000+y*100+x*10+i)&&i*1000000+x*100000+y*10000+z*1000+y*100+x*10+i<=b&&i*1000000+x*100000+y*10000+z*1000+y*100+x*10+i>=a) cout<<i*1000000+x*100000+y*10000+z*1000+y*100+x*10+i<<endl;
}
}
}
return 0;
}
by zml1029 @ 2024-07-29 11:06:21
给你看看我的代码
#include<bits/stdc++.h>
using namespace std;
int isPrime(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0;
}
}
return n;
}
int hw(int n){
int sum=0,k=n;
while(n!=0){
sum=sum*10+n%10;
n=n/10;
}
if(sum==k){
return 1;
}
else return 0;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=n;i<=m;i++){
if(i>=9989900){
return 0;
}
if(hw(i)){
if(isPrime(i)){
cout<<i<<endl;
}
}
}
return 0;
}
这道题的9989900是最大的回文质数范围,以防TLE。