没输出,求助

P1217 [USACO1.5] 回文质数 Prime Palindromes

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++)

首先就我觉得,你这一行没必要这么写。 再者: 你的primeisprime我没看到有类似赋值之类的操作,这大概率就是你没输出的原因

也别太有违和感,我也是个蒟蒻)我觉得吧,你的代码实际上已经没什么好改的了(鄙人不才,希望有大牛能行) 你看看这个,思路和你还是比较像的(已经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


|