0
点赞
收藏
分享

微信扫一扫

素数(暑假每日一题 50)


输入一个整数 ,要求输出所有从 到这个整数之间(不包括 和这个整数)个位为 的素数,如果没有则输出 ​​​−1​​。

输入格式
输入包含多组测试数据。

每组数据占一行,包含一个整数

输出格式
每组数据输出占一行,由小到大输出所有满足条件的素数,素数之间单个空格隔开。如果没有则输出 ​​​−1​​。

数据范围

输入最多包含

输入样例:

100

输出样例:

11 31 41 61 71

#include<iostream>

using namespace std;

const int N = 10010;

bool st[N];
int prime[N], k;

void fn(){

st[1] = true;
for(int i = 2; i < N; i++){

if(!st[i]) prime[++k] = i;

for(int j = 1; prime[j] <= (N - 1) / i; j++){

st[prime[j] * i] = true;

if(i % prime[j] == 0) break;
}
}
}

int main(){

fn();

int n;
while(cin >> n){

int cnt = 0;
for(int i = 1; i < n; i += 10)
if(!st[i]) cout << i << ' ', cnt++;

if(!cnt) cout << -1;
puts("");
}

return 0;
}


举报

相关推荐

0 条评论