ValueError @ 2024-09-23 13:09:38
#include<bits/stdc++.h>
#include<unistd.h>
#include<cstring>
using namespace std;
typedef long long lll;
lll a,b;
bool pd(lll num){//质数返回真,素数返回假
if(num==1||num==4)
return 0;
if(num==2||num==3)
return 1;
if(num %6!= 1&&num %6!=5)
return 0 ;
int tmp =sqrt(num);
for(int i=5;i<=tmp;i+=6) {
if(num%i==0||num%(i+2)==0){
return 0 ;
}
}
}
bool hw(int n){//回文返回真,否则返回假
int n1=n,n2=0;
while(n>0) {
n2=n2*10+n%10;
n/=10;
}
return n1==n2;
}
int main(){
cin>>a>>b;
for(int i=a;i<=b;i++){
if(pd(i) && hw(i)){
cout<<i<<endl;
}
}
return 0;
}
by luoyebushiye @ 2024-09-23 13:15:38
@PowerStudio
你的代码好像最后死循环了(但是你的答案是对的)
也建议你数据开大点(个人观点)
by ValueError @ 2024-09-25 16:47:40
@luoyebushiye 哪里错了?求大神指点(悬赏三个赞)
by ValueError @ 2024-09-25 16:48:18
@luoyebushiye 我用的是long long(前面typedef了)
by luoyebushiye @ 2024-09-25 20:10:19
@PowerStudio
#include<bits/stdc++.h>
#include<unistd.h>
#include<cstring>
using namespace std;
typedef long long lll;
lll a,b;
int zs(long long j){
for(long long s=2;s<=sqrt(j);s++){
if(j%s==0)
return 0;
}
return 1;
}
bool hw(int n){//回文返回真,否则返回假
int n1=n,n2=0;
while(n>0) {
n2=n2*10+n%10;
n/=10;
}
return n1==n2;
}
int main(){
cin>>a>>b;
for(int i=a;i<=b;i++){
if(zs(i) && hw(i)){
cout<<i<<endl;
}
}
return 0;
}
这样
by ValueError @ 2024-09-26 12:21:32
@luoyebushiye
谢谢谢谢,多谢大神指点!
by ValueError @ 2024-09-26 12:25:30
自己昨天改了一下
// #include<bits/stdc++.h>
// #include<unistd.h>
// #include<cstring>
// using namespace std;
// typedef long long lll;
// lll a,b;
// bool pd(lll num){//质数返回真,素数返回假
// if(num<=1){
// return 0;
// }
// for(int i=2;i*i<=num;i++) {
// if(num%i==0){
// return 0 ;
// }
// }
// return 1;
// }
// bool hw(lll x) {
// if (x < 0) return false; // 负数不是回文
// string str = to_string(x);
// int left = 0, right = str.length() - 1;
// while (left < right) {
// if (str[left] != str[right]) return false;
// left++;
// right--;
// }
// return true;
// }
// int main(){
// cin>>a>>b;
// if(a==2){
// cout<<"2"<<endl;
// }
// for(int i=a;i<=b;i++){
// if(pd(i)==true && hw(i)==true){
// printf("%d",i);
// }
// }
// return 0;
// }
by luoyebushiye @ 2024-09-26 13:11:34
@PowerStudio
#include<bits/stdc++.h>
using namespace std;
int mc(long long j){
for(long long s=2;s<=sqrt(j);s++){
if(j%s==0)
return 0;
}
return 1;
}
int main(){
long long n,m;
cin>>n>>m;
for(long long i=n;i<=m;i++){
if(i<=100){
if(i==1||i==3||i==5||i==7||i==11)
cout<<i<<endl;
}
else if(i>100&&i<1000){
if(i%10==i/100){
if(mc(i)==1)
cout<<i<<endl;
}
}
else if(i>=1000&&i<10000){
if(i%10==i/1000&&i%100/10==i%1000/100){
if(mc(i)==1)
cout<<i<<endl;
}
}
else if(i>=10000&&i<100000){
if(i%10==i/10000&&i%100/10==i%10000/1000){
if(mc(i)==1)
cout<<i<<endl;
}
}
else if(i>=100000&&i<1000000){
if(i%10==i/100000&&i/10000%10==i%100/10&&i%10000/1000==i%1000/100){
if(mc(i)==1)
cout<<i<<endl;
}
}
else if(i>=1000000&&i<10000000){
if(i%10==i/1000000&&i/100000%10==i%100/10&&i%1000/100==i/10000%10){
if(mc(i)==1)
cout<<i<<endl;
}
}
}
return 0;
}