社区讨论

感觉是最简单的代码(首先你得会欧筛)

P1217[USACO1.5] 回文质数 Prime Palindromes参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m443zo54
此快照首次捕获于
2024/11/30 19:48
去年
此快照最后确认于
2024/11/30 20:04
去年
查看原帖
其实可以化简为回文判断和欧筛。 首先进行欧筛 在进行回文判断 ***注。除了11,其他偶数位的都不是回文数 以下是代码
C
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h> 
#include<stdbool.h>
bool isprime[100000010];
int via[6000010],k=0;
void creat(long long n){
	isprime[1]=isprime[0]=true;
	for(long long i=2;i<=n;i++){
		if(!isprime[i])via[++k]=i;
		for(long l=1;l<=k;l++){
			if(via[l]*i>n)break;
			isprime[via[l]*i]=true;
			if(i%via[l]==0)break;
		}
	}
}
void judge(long long n){
	long long s=0,mid=n;
	while(mid>0){
		s=mid%10+s*10;
		mid/=10;
	}
	if(n==s)printf("%lld\n",n);
	else return ;
}
int main(){
	long long a,b;
	scanf("%lld%lld",&a,&b);
	creat(b);
	for(long i=1;i<=k;i++){
		if(via[i]<a)continue;
		if(via[i]>b)break;
		if(via[i]>=10&&via[i]<100)continue;
		if(via[i]>=1000&&via[i]<10000)continue;
		if(via[i]>=100000&&via[i]<1000000)continue;
		if(via[i]>=10000000&&via[i]<100000000)continue;
		judge(via[i]);
	}
}
//都看到这了,点点赞再走?

回复

4 条回复,欢迎继续交流。

正在加载回复...