Problem A

问题 A: 素数

时间限制: 1 Sec  内存限制: 32 MB
提交: 349  解决: 138
[提交][状态][讨论版][命题人:外部导入]

题目描述

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

输入

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

输出

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

样例输入

70

样例输出

11 31 41 61



简单的求素数的题

#include<bits/stdc++.h>

using namespace std;
const int N=1e4+10;
int prime[N];
bool vis[N];
int cnt=0;
void isprime(int n)
{
    fill(vis,vis+N,false);
    cnt=0;
    for(int i=2; i<n; i++)
    {
        if(!vis[i])
        {
            prime[cnt++]=i;
        }
        for(int j=i+i; j<n; j+=i)
        {
            vis[j]=true;
        }
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)==1)
    {
        isprime(n);
        vector<int>vec;
        for(int i=0; i<cnt; i++)
        {
            if(prime[i]%10==1)
            {
                vec.push_back(prime[i]);
            }
        }
        if(vec.size()==0) printf("-1\n");

        else
        {
            for(int i=0; i<vec.size(); i++)
            {
                if(i) printf(" ");
                printf("%d",vec[i]);
            }
            printf("\n");
        }

    }
    return 0;
}

 



posted @ 2018-12-19 12:37  12-num  阅读(217)  评论(0编辑  收藏  举报