计算机考研复试真题 素数

题目描述

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

输入描述:

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

输出描述:

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

输入

100

输出

11 31 41 61 71





//计算机考研复试真题  素数
/*
程序设计思想:先求出每个数的素数,存入向量,然后判断输出即可。
*/
//程序实现:
#include<iostream>
#include<vector>
using namespace std;

vector<int> prime(int n){    //求一个数的所有素数
    int i,j;
    vector<int>v;
    for(i=10;i<n;++i){    //因为输出不包括1和这个整数,且个位为1的素数,故从10开始。
        bool flag=false;
        for(j=2;j<i;++j){    //找10到n之间的素数
            if(i%j==0){     //能被整除则一定不是素数
                flag=true;
                break;
            }
        }
        if(flag==false)
            v.push_back(i);
    }
    if(v.size()==0)    //如果没有则输出-1
        v.push_back(-1);
    return v;
}

int main(){
    int n;
    while(cin>>n){
        vector<int>v1;
        v1=prime(n);
        bool flag=false;
        for(int i=0;i<v1.size()-1;++i){  //遍历素数
            if(v1[i]%10==1){    //满足条件
                flag=true;
                cout<<v1[i]<<" ";
            }
        }
        if(v1[v1.size()-1]%10==1){
                flag=true;
                cout<<v1[v1.size()-1]<<endl;
            }
        if(flag==false)    //不满足条件
            cout<<-1<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/parzulpan/p/9975943.html