社区讨论
感觉是最简单的代码(首先你得会欧筛)
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 条回复,欢迎继续交流。
正在加载回复...