p1217回文质数,线性筛法+数论

知道前提:
除11以外的偶数位的回文数都不是质数:偶数位的回文数可以分解成n*100..(偶数个)...001,而100..(偶数个)...001可以被11整除
所以1~1e8就可以降到1~1e7(除1e7以外最多7位数)
int main(){
    cin>>a>>b;
    线性筛法;
    for (i:a~b){
        if (i满足回文数且质数)printf;
    }
}
bool isok( int x){
    int 临时res=x, ans=0;
    while (res不为0){
        ans从末位一个一个读入
    }
    return ans==x;
}
代码
#include <iostream>

using namespace std;
const int N=10000007;
int a,b;
int cnt,prime[N];
bool st[N];

bool isok(int x){//是否是回文数 
	int res=x, ans=0;
	while(res){
		ans=ans*10+res%10;
		res/=10;
	}
	return ans==x;
}
int main(int argc, char** argv) {
	cin>>a>>b;
	if(a<10000000){
		b=min(b,N);
		for(int i=2;i<=b;i++){
			if(!st[i]) prime[cnt++]=i;
			for(int j=0;prime[j]<=b/i;j++){
				st[i*prime[j]]=true;
				if(i%prime[j]==0) break;
			}
		}	
	}
	
	for(int i=a;i<=b;i++){
		if(i>N) break;
		if(!st[i]&&isok(i)) cout<<i<<endl;
	}
	return 0;
}


全部评论

相关推荐

05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务