题解:
查看原帖
题解:
1114228
caoxiaokai1008楼主2024/4/29 17:27
#include<bits/stdc++.h>
using namespace std;
bool hw(int n){
	int t=n; 
	//n=12345,相反数m=54321
	//5 54 543 5432 54321
	int m=0;
	while(n!=0){
		int g=n%10;
		m=m*10+g;
		n/=10;
	}if(m==t){
		return 1;
	}return 0; 
}bool zs(int n){
	if(n%2==0&&n!=2||n%3==0&&n!=3||n%5==0&&n!=5||n%7==0&&n!=7){//缩减 
		return 0;	
	}for(int i=2;i*i<=n;i++){
		if(n%i==0){//判断是否是质数 
			return 0;
		}
	}
	return 1;
}int main(){
	int a,s;
	scanf("%d%d",&a,&s);
	if(s>9989899){
		s=9989899;//最大的回文数and质数 
	}for(int i=a;i<=s;i++){
		//是质数 是回文数
		//因为回文的时间复杂度更小,先判断回文,再判断质数 
		if(hw(i)==1&&zs(i)==1){
			cout<<i<<endl;
		}
	}return 0;
}
2024/4/29 17:27
加载中...