文章

13

粉丝

386

获赞

2

访问

59.6k

头像
素数
P1375 北京航空航天大学机试题
发布于2022年3月4日 21:31
阅读数 5.6k

先预处理找到10000内的所有素数,然后再找出n以内的所有满足条件的素数即可

 

#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

const int N = 10000 + 10;

bool arr[N];
vector<int> v;

void Initial(){
    fill(arr, arr + N, true);
    for(int i = 2; i < N; i++){
        if(arr[i]){
            v.push_back(i);
            for(int j = i * i; j < N; j += i)
                arr[j] = false;
        }
    }
}

vector<int> Find(int n){
    vector<int> ans;
    int index = 0;
    while(v[index] < n){
        if(v[index] % 10 == 1) ans.push_back(v[index]);
        index++;
    }
    return ans;
}

int main(){
    Initial();
    int n;
    while(scanf("%d", &n) != EOF){
        vector<int> ans = Find(n);
        if(ans.size() == 0) printf("-1\n");
        else{
            for(int i = 0; i < ans.size() - 1; i++)
                printf("%d ", ans[i]);
            printf("%d\n", ans[ans.size()...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发