wcx_is_god @ 2024-05-16 20:06:40
输入完之后一点反应都没有
#include <bits/stdc++.h>
using namespace std;
const int m = 1e8;
int prime[m],isprime[m];
int cnt = 1,a,b;
void is_prime(){
for(int i = 2; i <= m; i++){
if(!isprime[i]) prime[cnt++]=i;
for(int j = 1; j <= cnt && i * prime[j] <= m; j++){
isprime[i*prime[j]] = 1;
if(i%prime[j] == 0) break;
}
}
}
is_hw(int x){
int a = x,b = 0;
while(a){
b = a % 10;
b *= 10;
a /= 10;
}
if(x == b) return 1;
return 0;
}
int main(){
is_prime();
cin >> a >> b;
for(int i = 0; ; i++){
if(is_hw(prime[i]) && prime[i] >= a && prime[i] <= b){
cout << prime[i] << endl;
}
if(prime[i] > b) break;
}
return 0;
}
by CheeseFunction @ 2024-05-16 20:21:36
for(int i = 0; ; i++)
首先就我觉得,你这一行没必要这么写。
再者:
你的prime
和isprime
我没看到有类似赋值之类的操作,这大概率就是你没输出的原因
(也别太有违和感,我也是个蒟蒻)我觉得吧,你的代码实际上已经没什么好改的了(鄙人不才,希望有大牛能行)
你看看这个,思路和你还是比较像的(已经AC):
#include<bits/stdc++.h>
using namespace std;
int prime(int x){
if(x==1)return true;
for(int i=sqrt(x);i>=1;i--){
if(x%i==0 && i!=1)return true;
}
return false;
}
int main(){
int a,b,zx[100]={0},nx[100]={0};
cin>>a>>b;
if(a==2){
cout<<2<<endl;
a++;
}else if(a%2==0)a++;
for(int i=a;i<=b;i+=2){
int i1=i;
bool sum=true;
int js=0;
while(i1){
js++;
zx[js]=i1%10;
nx[js]=i1%10;
i1/=10;
}
reverse(nx+1,nx+js+1);
while(js--){
if(nx[js]!=zx[js])sum=false;
}
if(sum && !prime(i)){
cout<<i<<endl;
}
}
}
by CheeseFunction @ 2024-05-16 20:21:58
希望能帮到你
by wcx_is_god @ 2024-05-21 16:08:42
谢谢你!!!
https://www.luogu.com.cn/team/80087