1163.素数

题目描述:

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

输入:

输入有多组数据。
每组一行,输入n。

输出:

输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。

样例输入:
100
样例输出:
11 31 41 61 71
#include<iostream>
using namespace std;

int prime[10000];
int size;
bool mark[10001];
void init(){
    for(int i=1;i<=10000;i++){
        mark[i]=false;
    }
    size=0;
    for(int i=2;i<=10000;i++){
        if(mark[i]==true)continue;
        prime[size++]=i;
        for(int j=i*i;j<=10000;j+=i){
            mark[j]=true;
        }
    }
}

int main(){
    int n;
    init();
    while(cin>>n){
        bool is=false;
        for(int i=0;i<size;i++){
            if(prime[i]<n && prime[i]%10==1){
                if(is==false){
                    is=true;
                    cout<<prime[i];
                }
                else cout<<" "<<prime[i];
            }
        }
        if(is==false){
            cout<<"-1"<<endl;
        }
        else cout<<endl;
    }
    return 0;
}

 

posted @ 2018-10-01 17:37  bernieloveslife  阅读(191)  评论(0编辑  收藏  举报